我正在使用慢性来获得任何一年的最后一个星期日.它很乐意给我第n个星期天,但不是最后一个星期天.
这有效,但不是我需要的:
Chronic.parse('4th sunday in march', :now => Time.local(2015,1,1))
Run Code Online (Sandbox Code Playgroud)
这是我需要的,但不起作用:
Chronic.parse('last sunday in march', :now => Time.local(2015,1,1))
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个明显的限制?
更新:我正在推测下面的两个答案,因为它们都很好,但我已经在"纯Ruby"中实现了这个(在2行代码中除了require 'date'行之外),但我试图向管理层演示Ruby是用来替换正在消失的Java代码库的正确语言(并且有几十行代码来计算它),我告诉一位经理我可能会在一行Ruby中做到这一点,而且它是可读的,易于维护.
tes*_*ssi 10
我不确定Chronic(我之前没有听说过),但我们可以在纯粹的红宝石中实现这个:)
##
# 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
Run Code Online (Sandbox Code Playgroud)
该last_sunday方法可以这样使用:
last_sunday 07, 2013
#=> #<Date: 2013-07-28 ((2456502j,0s,0n),+0s,2299161j)>
Run Code Online (Sandbox Code Playgroud)
这是有效的,并且是我所能得到的可读性:
Chronic.parse('last sunday', now: Date.new(year,3,31))
Run Code Online (Sandbox Code Playgroud)
感谢 Ismael Abreu 提出只解析“上周日”并通过:now选项控制其余部分的想法。
更新:也请支持伊斯梅尔的回答。
| 归档时间: |
|
| 查看次数: |
1723 次 |
| 最近记录: |