Il y a plusieurs choses folles qui se produisent avec un objet JS DATE qui convertit des chaînes, par exemple, considérez la date suivante que vous avez fournie
Remarque: Les exemples suivants peuvent être ou non un jour de congé selon VOTRE fuseau horaire et l'heure actuelle.
new Date("2011-09-24"); // Year-Month-Day
// => Fri Sep 23 2011 17:00:00 GMT-0700 (MST) - ONE DAY OFF.
Cependant, si nous réorganisons le format de chaîne en Mois-Jour-Année ...
new Date("09-24-2011");
=> // Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
Un autre étrange
new Date("2011-09-24");
// => Fri Sep 23 2011 17:00:00 GMT-0700 (MST) - ONE DAY OFF AS BEFORE.
new Date("2011/09/24"); // change from "-" to "/".
=> // Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
Nous pourrions facilement changer les tirets dans votre date "2011-09-24" lors de la création d'une nouvelle date
new Date("2011-09-24".replace(/-/g, '\/')); // => "2011/09/24".
=> // Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
Et si nous avions une chaîne de date comme "2011-09-24T00: 00: 00"
new Date("2011-09-24T00:00:00");
// => Fri Sep 23 2011 17:00:00 GMT-0700 (MST) - ONE DAY OFF.
Maintenant, changez le trait d' union pour faire une barre oblique comme avant; ce qui se produit?
new Date("2011/09/24T00:00:00");
// => Invalid Date
Je dois généralement gérer le format de date 2011-09-24T00: 00: 00 alors c'est ce que je fais.
new Date("2011-09-24T00:00:00".replace(/-/g, '\/').replace(/T.+/, ''));
// => Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
METTRE À JOUR
Si vous fournissez des arguments distincts au constructeur Date, vous pouvez obtenir d'autres sorties utiles comme décrit ci-dessous
Remarque: les arguments peuvent être de type Number ou String. Je vais montrer des exemples avec des valeurs mixtes.
Obtenez le premier mois et le premier jour d'une année donnée
new Date(2011, 0); // Normal behavior as months in this case are zero based.
=> // Sat Jan 01 2011 00:00:00 GMT-0700 (MST)
Obtenez le dernier mois et le dernier jour d'une année
new Date((2011 + 1), 0, 0); // The second zero roles back one day into the previous month's last day.
=> // Sat Dec 31 2011 00:00:00 GMT-0700 (MST)
Exemple d'arguments Number, String. Notez que le mois est mars, car le mois est à nouveau basé sur zéro.
new Date(2011, "02");
=> // Tue Mar 01 2011 00:00:00 GMT-0700 (MST)
Si nous faisons la même chose mais avec un jour de zéro, nous obtenons quelque chose de différent.
new Date(2011, "02", 0); // again the zero roles back from March to the last day of February.
=> // Mon Feb 28 2011 00:00:00 GMT-0700 (MST)
L'ajout d'un jour de zéro à n'importe quel argument année et mois obtiendra le dernier jour du mois précédent. Si vous continuez avec des nombres négatifs, vous pouvez continuer à reculer un autre jour
new Date(2011, "02", -1);
=> // Sun Feb 27 2011 00:00:00 GMT-0700 (MST)