我正在使用慢性来获得任何一年的最后一个星期日.它很乐意给我第n个星期天,但不是最后一个星期天.
这有效,但不是我需要的:
Chronic.parse('4th sunday in march',:Now => Time.local(2015,1,1))
这是我需要的,但不起作用:
Chronic.parse('last sunday in march',1))
这种明显的限制有什么办法吗?
更新:我正在推测下面的两个答案,因为它们都很好,但我已经在“纯Ruby”中实现了这个(在2行代码中,除了require’date’行之外),但我正在尝试向管理层证明Ruby是用来替换正在消失的Java代码库的正确语言(并且有几十行代码来计算它),我告诉一位经理我可能会在一行中做到这一点. Ruby,它易读且易于维护.
解决方法
我不确定慢性病(我之前没有听说过),但我们可以用纯ruby实现这个:)
## # returns a Date object being the last sunday of the given month/year # month: integer between 1 and 12 def last_sunday(month,year) # get the last day of the month date = Date.new year,month,-1 #subtract number of days we are ahead of sunday date -= date.wday end
last_sunday方法可以像这样使用:
last_sunday 07,2013 #=> #<Date: 2013-07-28 ((2456502j,0s,0n),+0s,2299161j)>