小ネタですが、不意に見つけたので。
1.year
1.year.to_i
=> 31556952
1の位が2っておかしくない??
1.year.to_f/60/60/24
=> 365.2425
この端数はもしや4年に一度固まって1日分になったりならなかったりするやつ…!!
西暦年が4で割り切れる年は閏年。
ただし、西暦年が100で割り切れる年は平年。
ただし、西暦年が400で割り切れる年は閏年。
400.years.to_f/60/60/24
=> 146097.0
365*100 + 97
=> 146097
おー。。
1.month
1.month.to_f
=> 2629746.0
1.month.to_f/60/60/24
=> 30.436875
1.month.to_f/60/60/24 * 12
=> 365.2425
おー。。
1.day
1.day.to_f
=> 86400.0
1.day.to_f/60/60/24
=> 1.0
なるほど。
ちなみに
1.year.class
=> ActiveSupport::Duration
今回はto_f
で数値化してるから端数が出てるだけであって、
ActiveSupport::Duration
のまま普通に日数計算するとよしなにしてくれるので心配無用です。
cur = Time.current
=> Mon, 21 May 2018 09:22:33 UTC +00:00
cur = Time.current + 1.year
=> Tue, 21 May 2019 09:22:33 UTC +00:00