LoginSignup
11
4

More than 5 years have passed since last update.

Railsの1年は思いのほか厳密だった話

Posted at

小ネタですが、不意に見つけたので。

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
11
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4