Ce n'est pas le sélecteur de date,
console.log(new Date('2012-03-21')); //prints Tue Mar 20 2012 20:00:00 GMT-0400 (Eastern Daylight Time)
Le Javascript Date peut accepter une des syntaxes suivantes comme ci-dessous,
- nouvelle date()
- nouvelle Date(millisecondes)
- nouvelle date(dateString)
- nouvelle Date(année, mois, jour [, heure, minute, seconde, milliseconde ])
Donc, dans votre cas, il va appeler la dateString et analyser . Essayez donc d'ajouter l'heure comme ci-dessous,
new Date ('2012-03-21T00:00:00') //should return you Wed Mar 21 2012
DEMO
ou Mieux utiliser comme ci-dessous,
new Date (2012, 2, 21).
année - Valeur entière représentant l'année. Pour des raisons de compatibilité (afin d'éviter le problème du passage à l'an 2000), vous devez toujours spécifier l'année en entier ; utilisez 1998, plutôt que 98.
mois - Valeur entière représentant le mois, commençant par 0 pour janvier à 11 pour décembre.
jour - Valeur entière représentant le jour du mois (1-31).
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.