2

我正在尝试创建一个每月运行的循环,我注意到我的逻辑没有考虑闰年。

我试过了:

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 日提出的,代码在另一天可能会有所不同。

4

1 回答 1

3

这是因为计算会计算当前年份的月末,然后加上 3 年。

(Time.now.beginning_of_month.to_date - 1.month)= 28,2013 年 2 月。加上 3 年,你得到 28,2016 年 2 月。

试试这个 -

((Time.now.beginning_of_month.to_date - 1.month) + 3.years).end_of_month

顺便说一句,减去 2 个月将我带到一月(这里仍然是 3 月 31 日)

于 2013-03-31T15:29:49.610 回答