Количество секунд в году, просчитанное в Rails 5 - PullRequest
0 голосов
/ 25 сентября 2018

Я использую 1.year.to_i количество секунд в 1 году.Но для рельсов 4 и 5 он имеет заметную разницу в 648 секунд или около 10 минут.Я это изменение намеренно, если да, в чем причина этого.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Я создал и выпустил на GitHub и только что получил идеальный ответ.

1.год теперь предоставляется ActiveSupport :: Duration и соответствует григорианскому календарю.Продолжительность григорианского года => 365,2425 дней, что составляет 31556952 секунды.То, о чем вы говорите, это юлианский год, который почти на 11 минут дольше.

Так что это не странное поведение.

https://github.com/rails/rails/issues/33978#issuecomment-424331247

0 голосов
/ 25 сентября 2018

Это константа, определенная в ActiveSupport :: Duration, которая называется SECONDS_PER_YEAR, и ее значение равно 31556952.

Чтобы отследить это, приведены шаги, которые я выполнил в pry, может помочь вам или кому-то еще, читающему вбудущее.

[8] pry(main)> show-source 1.year
...
def years
  ActiveSupport::Duration.years(self)
end

[9] pry(main)> show-source ActiveSupport::Duration.years
...
def years(value) #:nodoc:
  new(value * SECONDS_PER_YEAR, [[:years, value]])
end

[11] pry(main)> cd ActiveSupport::Duration
[12] pry(ActiveSupport::Duration):1> SECONDS_PER_YEAR
=> 31556952
...