加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby / Rails – 上周五获得? (上周五)

发布时间:2020-12-17 03:07:41 所属栏目:百科 来源:网络整理
导读:有没有办法在Rails中获得上周五的日期?我已经看到了如何获得最接近的星期五,或者上周一或周日,但我特别需要上周五. 因此,直到本周的周五,也就是上周五的周五.然后从星期六开始,这是前一天的星期五. 例如: 3月4日星期六,3月10日星期五 – 3月3日星期五 3月1
有没有办法在Rails中获得上周五的日期?我已经看到了如何获得最接近的星期五,或者上周一或周日,但我特别需要上周五.

因此,直到本周的周五,也就是上周五的周五.然后从星期六开始,这是前一天的星期五.

例如:

> 3月4日星期六,3月10日星期五 – > 3月3日星期五
> 3月11日星期六至3月5日星期五. 17日 – > 3月10日星期五

解决方法

这是一种没有任何条件的方法.这将接受Date,Time或DateTime对象.

def prior_friday(date)
  days_before = (date.wday + 1) % 7 + 1
  date.to_date - days_before
end

现在你可以做以下任何一件事:

>> prior_friday(Date.today)
=> Fri,24 Mar 2017
>> prior_friday(Date.tomorrow)
=> Fri,31 Mar 2017
>> prior_friday(Date.new(2017,4,4))
=> Fri,31 Mar 2017
>> prior_friday(Time.now)
=> Fri,24 Mar 2017
>> prior_friday(DateTime.tomorrow)
=> Fri,31 Mar 2017
>> prior_friday(1.year.from_now)
=> Fri,30 Mar 2018

对于一周中的不同日期,在应用mod之前更改添加到date.wday的整数:

def prior_monday(date)
  days_before = (date.wday + 5) % 7 + 1
  date.to_date - days_before
end

或制作通用方法:

def prior_weekday(date,weekday)
  weekday_index = Date::DAYNAMES.reverse.index(weekday)
  days_before = (date.wday + weekday_index) % 7 + 1
  date.to_date - days_before
end

示例运行于2018年8月4日星期六:

>> prior_weekday(Date.today,'Saturday')
Sat,28 Jul 2018
>> prior_weekday(Date.today,'Friday')
Fri,03 Aug 2018
>> prior_weekday(Date.tomorrow,04 Aug 2018
>> prior_weekday(Date.tomorrow,'Sunday')
Sun,29 Jul 2018

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读