Aujourd'hui est le 29 février: le jour où nos tests ont éclaté.Rails TimeWithZone et les années bissextiles
Nos tests échouent parce que ces tests font des choses qui, à la fin, peuvent être comparées à une commande comme celle-ci: Time.zone.now - 1.year + 1.year
. Et il se trouve être PAS égale à Time.zone.now
.
Pourquoi cela se produit-il? Pourquoi ActiveSupport n'est-il pas capable de gérer les années bissextiles dans des calculs comme celui-là? Cela ne fonctionne-t-il pas avec les horodatages, cela empêcherait ce genre de problème de se produire?
Si vous testez aujourd'hui, vous avez la malchance ... Aujourd'hui est le 29 Février, qui existe seulement tous les 4 ans. Donc 'Time.zone.now' +' 1.year' vous amènera au 28 février car le 29 n'existe pas pour l'année 2017. '1.year.from_now' sera aussi de retour le 28 février 2017 – MrYoshiji
Oui, je comprends cela. Mais pourquoi 'Time.zone.now + 1.year' n'est-il pas égal au 1er mars, par exemple? À mon avis, ce serait plus approprié. – Guilherme
Time.zone.now - 365.days + 365.days semble fonctionner si ... – tobmatth