Mik*_*ike 29 ruby datetime ruby-on-rails
使用Rails 3应用程序.给定DateTime,我需要生成上一个星期日的日期时间.如果DateTime是星期日,那么我希望那个星期天本身回来.以下是一些例子:
November 7, 2011 => November 6, 2011 November 6, 2011 => November 6, 2011 November 5, 2011 => October 30, 2011
有任何想法吗?我有点卡住了.
Cha*_*esh 45
Rails有一种方便的方法来计算一周的开头.
irb(main):001:0> Date.today.beginning_of_week(:sunday)
#=> Sun, 16 Dec 2012
Run Code Online (Sandbox Code Playgroud)
有关Date其他可能性,请参阅Rails扩展:http://api.rubyonrails.org/classes/Date.html
更新:Rails 5.2添加了便捷方法来查找一天的下一个/上一个匹配项.
[1] pry(main)> Date.today.prev_occurring(:sunday)
#=> Sun, 29 Apr 2018
Run Code Online (Sandbox Code Playgroud)
请参阅DateAndTime::Calculations有关文档prev_occurring和next_occurring.
Phr*_*ogz 37
class DateTime
def previous_sunday
self - wday
end
end
Run Code Online (Sandbox Code Playgroud)
...但这很容易,没有理由将它修补到课堂上:)
irb(main):001:0> require 'date'; now = DateTime.now
#=> #<DateTime: 2011-11-10T21:10:04-07:00 (…)>
irb(main):002:0> sunday = now - now.wday
#=> #<DateTime: 2011-11-06T21:10:04-07:00 (…)>
Run Code Online (Sandbox Code Playgroud)
该wday(平日)将0任何星期天,所以在日期没有变化会发生.