Ruby on rails Rails Time.now.end\u月未计入闰年

Ruby on rails Rails Time.now.end\u月未计入闰年,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我试图创建一个每月运行的循环,我注意到我的逻辑并没有考虑闰年 我试过: newDate = (Time.now.beginning_of_month.to_date - 2.months) + 3.years 及 他们都返回了《太阳报》,2016年2月28日 为什么他们不考虑闰年和2月29日的回归 注:此问题是在2013年3月31日提出的,代码在另一天的行为可能会有所不同。这是因为计算时会计算当前年份的月末,然后再加上3年 (Time.now.start\u of \u month.to \u

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

我试过:

newDate = (Time.now.beginning_of_month.to_date - 2.months) + 3.years

他们都返回了《太阳报》,2016年2月28日

为什么他们不考虑闰年和2月29日的回归


注:此问题是在2013年3月31日提出的,代码在另一天的行为可能会有所不同。

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

(Time.now.start\u of \u month.to \u date-1.month)
=2013年2月28日。再加上3年,你将得到2016年2月28日

试试这个-

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

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

为什么没有任何解释就投了反对票?对我来说似乎是一个有效的问题?我知道
-1。month
只针对这个问题,所以一个月后它也将不再有数据。很高兴能提供帮助-关于一个月的真实情况,可能值得添加一个,否则您可能会看到一些评论:P
((Time.now.beginning_of_month.to_date - 1.month) + 3.years).end_of_month