Rails: добавление лет до 29 февраля - PullRequest
1 голос
/ 03 марта 2020

Попробуйте это с последними Rails (6.0.2.1):

Date.new(2020,2,29) + 1.year + 1.year + 1.year + 1.year
=> Wed, 28 Feb 2024

Date.new(2020,2,29) + 4.years
=> Thu, 29 Feb 2024

или с этим:

Date.new(2020,2,28) + 1.year
=> Sun, 28 Feb 2021

Date.new(2020,2,29) + 1.year
=> Sun, 28 Feb 2021

Ошибка или функция?

1 Ответ

1 голос
/ 04 марта 2020

Насколько я понимаю, это совсем не ошибка. В первом случае ruby добавляет каждый год к предыдущему. Как мы знаем, Date.new(2021,2,29) является недопустимой датой, действительная дата Date.new(2021,2,28), поэтому результат вполне ожидаем. Если добавить 4 года, поскольку одна операция выглядит справедливой и логически c, результат будет Thu, 29 Feb 2024, но если вы добавите только 3 года, результат будет Tue, 28 Feb 2023.

...