Cela est dû à la différence de fuseau horaire avec le format de date - aaaa-mm-jj.
new Date ('2015/07/10'); // returns: "Fri Jul 10 2015 00:00:00 GMT-0700 (Pacific Daylight Time)"
new Date ('2012-07-10'); // returns: "Thu Jul 09 2015 17:00:00 GMT-0700 (Pacific Daylight Time)"
yyyy/mm/dd
- ne prend pas en compte le fuseau horaire dans le calcul de l'heure locale.
yyyy-mm-dd
- prend en compte l'heure lors du calcul de l'heure locale dans la fonction date de java script.
Ce problème peut être reproduit lorsque les fuseaux horaires du client (navigateur) et du serveur sont différents et que la différence entre le fuseau horaire et la date est de 1 jour.
Vous pouvez essayer cela sur votre machine en changeant l'heure dans différents fuseaux horaires où l'écart entre les deux devrait être >=12 heures.
0 votes
Vous êtes sûr que c'est lié à l'indicateur de date ?
document.write(new Date('2012-03-21'))
imprimeTue Mar 20 2012 20:00:00 GMT-0400 (Eastern Daylight Time)
pour moi. Le bug de l'année bissextile ?0 votes
Quelque chose à voir avec le formatage aussi, regardez ça : jsfiddle.net/fkSC5 Passing
2012-03-21
et2012/03/21
àDate()
donne des résultats à 4 heures d'intervalle.0 votes
C'est vrai. La nouvelle Date('...') est décalée d'un jour.
0 votes
Il doit s'agir d'un bogue avec Date(). 2012/03/21 semble plus juste que 2012-03-21.
0 votes
Ce qui montre que vous ne devez jamais faire confiance à l'analyseur de date intégré. Ils diffèrent entre les implémentations, donc toujours analyser l'entrée et créer la date manuellement.
4 votes
Ce n'est pas un bug. Lorsque vous fournissez la date au format UTC standard, Date suppose que vous fournissez l'heure UTC, qui est indépendante de votre heure locale. La raison pour laquelle vous êtes décalé d'un jour est que l'heure UTC correspond à un fuseau horaire qui est en avance sur le vôtre. (Puisque vous n'avez pas également fourni d'heure, 0:0:0 a été supposé.) Fournir une date dans un format autre que UTC indique l'utilisation d'un fuseau horaire local. J'ai rencontré ce problème dans un autre contexte, lorsque YAML a interprété ma date au format UTC avec un jour de décalage.