Ci sono diverse cose folli che accadono con un oggetto JS DATE che converte le stringhe, ad esempio considera la data seguente che hai fornito
Nota: I seguenti esempi possono essere o non essere un giorno di riposo a seconda TUO fuso orario e l'ora corrente.
new Date("2011-09-24"); // Year-Month-Day
// => Fri Sep 23 2011 17:00:00 GMT-0700 (MST) - ONE DAY OFF.
Tuttavia, se riordiniamo il formato stringa in Mese-Giorno-Anno ...
new Date("09-24-2011");
=> // Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
Un altro strano
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.
Potremmo facilmente cambiare trattini nella tua data "2011-09-24" quando crei una nuova data
new Date("2011-09-24".replace(/-/g, '\/')); // => "2011/09/24".
=> // Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
E se avessimo una stringa di date del tipo "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.
Ora cambia il trattino in avanti come prima; che succede?
new Date("2011/09/24T00:00:00");
// => Invalid Date
In genere devo gestire il formato data 2011-09-24T00: 00: 00 quindi questo è quello che faccio.
new Date("2011-09-24T00:00:00".replace(/-/g, '\/').replace(/T.+/, ''));
// => Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
AGGIORNARE
Se si forniscono argomenti separati al costruttore Date, è possibile ottenere altri output utili come descritto di seguito
Nota: gli argomenti possono essere di tipo Numero o Stringa. Mostrerò esempi con valori misti.
Ottieni il primo mese e il giorno di un determinato anno
new Date(2011, 0); // Normal behavior as months in this case are zero based.
=> // Sat Jan 01 2011 00:00:00 GMT-0700 (MST)
Ottieni l'ultimo mese e il giorno di un anno
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)
Esempio di argomenti Number, String. Nota che il mese è marzo perché di nuovo a base zero.
new Date(2011, "02");
=> // Tue Mar 01 2011 00:00:00 GMT-0700 (MST)
Se facciamo la stessa cosa ma con un giorno di zero, otteniamo qualcosa di diverso.
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'aggiunta di un giorno zero a qualsiasi argomento dell'anno e del mese otterrà l'ultimo giorno del mese precedente. Se continui con numeri negativi, puoi continuare a tornare indietro un altro giorno
new Date(2011, "02", -1);
=> // Sun Feb 27 2011 00:00:00 GMT-0700 (MST)