我正在使用 Chronic 获取任何给定年份的月份的最后一个星期日。它很乐意给我第 n 个星期日,但不是最后一个。
这有效,但不是我需要的:
Chronic.parse('4th sunday in march', :now => Time.local(2015,1,1))
这是我需要的,但不起作用:
Chronic.parse('last sunday in march', :now => Time.local(2015,1,1))
有什么办法可以解决这个明显的限制吗?
更新:我赞成下面的两个答案,因为它们都很好,但我已经在“纯 Ruby”中实现了它(在 2 行中代码,除了 require 'date'
行),但我试图向管理层证明 Ruby 是用于替换即将消失的 Java 代码库(并且有几十个行代码来计算这个),我告诉一位经理,我可能可以用一行 Ruby 来完成它,而且它可读性强且易于维护。
最佳答案
我不确定 Chronic
(我以前没听说过),但我们可以用纯 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)>
关于ruby - 获取本月的最后一个星期日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17973248/