Rails上周日与任何DateTime有关
使用Rails 3应用程序。 给定DateTime,我需要为上一个星期日生成日期时间。 如果DateTime是星期日,那么我希望那个星期天本身回来。 这是一些例子:
2011年11月7日=> 2011年11月6日 2011年11月6日=> 2011年11月6日 2011年11月5日=> 2011年10月30日
有任何想法吗? 我有点卡住了。
class DateTime def previous_sunday self - wday end end
…但这很容易,没有理由将它修补到课堂上:)
irb(main):001:0> require 'date'; now = DateTime.now #=> # irb(main):002:0> sunday = now - now.wday #=> #
对于任何星期日, wday
(工作日)将为0
,因此不会对日期进行任何更改。
Rails有一种方便的方法来计算一周的开头。
irb(main):001:0> Date.today.beginning_of_week(:sunday) #=> Sun, 16 Dec 2012
有关其他可能性,请参阅Date
Rails扩展: http : //api.rubyonrails.org/classes/Date.html
更新 :Rails 5.2添加了便捷方法来查找一天的下一个/上一个匹配项。
[1] pry(main)> Date.today.prev_occurring(:sunday) #=> Sun, 29 Apr 2018
有关prev_occurring
和next_occurring
信息,请参阅DateAndTime::Calculations
文档。