Je suis confus mais en javascript:
> new Date('2012-1-15') - new Date('2012-01-15')
21600000
Pourquoi est-ce ainsi ? (21600000 / 1000 / 3600 == 6 heures)
Je suis confus mais en javascript:
> new Date('2012-1-15') - new Date('2012-01-15')
21600000
Pourquoi est-ce ainsi ? (21600000 / 1000 / 3600 == 6 heures)
Le format de date yyyy-mm-dd
(2012-01-15) est interprété comme étant une date UTC tandis que yyyy-m-dd
(2012-1-15) est interprété comme une date locale. Cela est visible si vous utilisez .toString
sur chaque date.
> (new Date( '2012-01-15' )).toString()
"Sam. 14 Janv. 2012 16:00:00 GMT-0800 (Heure normale du Pacifique)"
> (new Date( '2012-1-15' )).toString()
"Dim. 15 Janv. 2012 00:00:00 GMT-0800 (Heure normale du Pacifique)"
Notez que je suis en Californie, d'où l'heure normale du Pacifique. Si vous êtes dans un fuseau horaire différent, vous obtiendrez des résultats différents.
Lorsque JavaScript interprète des dates, il essaie d'abord les formats utilisés dans plus de régions (comme l'UTC) avant de tenter les formats de date localisés. La dernière partie du format de date UTC est un décalage de fuseau horaire par rapport à GMT qui est supposé être 0 lorsqu'il est manquant (comme c'est le cas dans cet exemple). Pour obtenir la même date, vous auriez besoin du timestamp complet UTC: 2012-01-15T00:00:00-08:00.
Le résultat de new Date('2012-1-15')
dépend de l'implémentation (norme ECMAScript, clause 15.9.4.2).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.