同じ効果で1の代わりに4年を使用できます。 (注意: - 1.dayそれは今3月1日であるため)
(Time.zone.now - 1.day) - 4.year + 4.year
=> Mon, 29 Feb 2016 15:12:58 UTC +00:00
をそれは日付に関係なく、その(下)注目に値するかもしれません。
Time.zone.now
=> Tue, 01 Mar 2016 15:11:51 UTC +00:00
Time.zone.now == Time.zone.now - 1.year + 1.year
=> false
あなたがbeginning_of_dayを使用しない限り:
(Time.zone.now - 1.day).beginning_of_day == ((Time.zone.now - 1.day) - 4.year + 4.year).beginning_of_day
=> true
また、それはあなたが実際にあなたがTime.now - 1.year + 1.year
テストしたいと思うのはなぜ...やろうとしているかによって決まり?
また...
1.year == 365.days
=> false
1.year == 365.25.days
=> true
あなたは今日、それをテストしている場合は、あなたが悪い運を持っている...今日は唯一の4年ごとに存在する2月の29日です。だから、 'Time.zone.now' +' 1.year'は、2月28日にあなたを連れてくるでしょう。なぜなら、29日は2017年には存在しないからです。「1年.from_now」は、2月28日にも返されます。 – MrYoshiji
はい、私はそれを理解しています。しかし、なぜTime.zone.now + 1.yearは3月1日と同じではないのですか?私の意見では、それはより適切であろう。 – Guilherme
Time.zone.now - 365.days + 365.daysはうまくいくようです... – tobmatth