我正在尝试创建一个每月运行一次的循环,我注意到我的逻辑并没有考虑到闰年。
我试过了:
newDate = (Time.now.beginning_of_month.to_date - 2.months) + 3.years
和
newDate = (Time.now.to_date - 2.months).end_of_month + 3.year
他们都返回Sun, 28 Feb 2016
。
他们为什么不考虑闰年并于2月29日回归?
注意:这个问题是在2013年3月31日提出的,代码可能在另一天表现不同。
答案 0 :(得分:3)
这是因为计算计算当前年度的月末,然后增加3年。
(Time.now.beginning_of_month.to_date - 1.month)
= 28,2013年2月。再加上3年,2016年2月28日。
试试这个 -
((Time.now.beginning_of_month.to_date - 1.month) + 3.years).end_of_month
顺便说一句,减去2个月需要我到1月(这里仍然是3月31日)