Сегодня 29 февраля: день наших испытаний сломался.Рельсы TimeWithZone и високосные годы
Наши тесты терпят неудачу, потому что эти тесты делают то, что в конце концов можно сравнить с такой командой: Time.zone.now - 1.year + 1.year
. И это бывает NOT, равное Time.zone.now
.
Почему это происходит? Почему ActiveSupport не способен обрабатывать високосные годы в таких вычислениях? Разве это не работает с метками времени, которые предотвратили бы такую проблему?
Если вы тестируете его сегодня, у вас есть неудача ... Сегодня 29 февраля, который существует только один раз в 4 года. Итак, 'Time.zone.now' +' 1.year' доставит вас до 28 февраля, потому что 29-го не существует на 2017 год. '1.year.from_now' также вернет 28 февраля 2017 года – MrYoshiji
Да, я это понимаю. Но почему, например, «Time.zone.now + 1.year» равен 1 марта? На мой взгляд, это было бы более уместно. – Guilherme
Time.zone.now - 365.days + 365.days, похоже, работает, хотя ... – tobmatth