Gre*_*ass 5 ruby ruby-on-rails date
有没有办法在Rails中获得上周五的日期?我已经看到了如何获得最接近的星期五,或者上周一或周日,但我特别需要上周五.
因此,直到本周的周五,也就是上周五的周五.然后从星期六开始,这是前一天的星期五.
例如:
Wil*_*lva 17
从 Rails 5.2 开始,您可以使用#prev_occurring:
Date.today.prev_occurring(:friday)
Run Code Online (Sandbox Code Playgroud)
mov*_*son 14
这是一种没有任何条件的方法.这将接受Date,Time或DateTime对象.
def prior_friday(date)
days_before = (date.wday + 1) % 7 + 1
date.to_date - days_before
end
Run Code Online (Sandbox Code Playgroud)
现在你可以做以下任何一件事:
>> 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
Run Code Online (Sandbox Code Playgroud)
对于一周中的不同日期,更改在date.wday应用mod之前添加的整数:
def prior_monday(date)
days_before = (date.wday + 5) % 7 + 1
date.to_date - days_before
end
Run Code Online (Sandbox Code Playgroud)
或制作通用方法:
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
Run Code Online (Sandbox Code Playgroud)
示例运行于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, 'Friday')
Fri, 03 Aug 2018
>> prior_weekday(Date.tomorrow, 'Saturday')
Sat, 04 Aug 2018
>> prior_weekday(Date.tomorrow, 'Sunday')
Sun, 29 Jul 2018
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2499 次 |
| 最近记录: |