Es gibt mehrere verrückte Dinge, die mit einem JS passieren DATUM Objekt, das Zeichenketten konvertiert, zum Beispiel das folgende Datum, das Sie angegeben haben
Anmerkung: Die folgenden Beispiele können, müssen aber nicht sein EIN TAG FREI abhängig von IHR Zeitzone und aktuelle Zeit.
new Date("2011-09-24"); // Year-Month-Day
// => Fri Sep 23 2011 17:00:00 GMT-0700 (MST) - ONE DAY OFF.
Wenn wir jedoch das Format der Zeichenkette umstellen auf Monat-Tag-Jahr ...
new Date("09-24-2011");
// => Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
Ein weiterer seltsamer Fall
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.
Wir könnten die Bindestriche in Ihrem Datum leicht ändern "2011-09-24" wenn Sie ein neues Datum festlegen
new Date("2011-09-24".replace(/-/g, '\/')); // => "2011/09/24".
// => Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
Was wäre, wenn wir eine Datumszeichenfolge hätten wie "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.
Jetzt ändern Bindestrich a Schrägstrich wie bisher; was passiert?
new Date("2011/09/24T00:00:00");
// => Invalid Date.
Ich muss normalerweise das Datumsformat verwalten 2011-09-24T00:00:00 Also mache ich Folgendes.
new Date("2011-09-24T00:00:00".replace(/-/g, '\/').replace(/T.+/, ''));
// => Sat Sep 24 2011 00:00:00 GMT-0700 (MST) - CORRECT DATE.
UPDATE
Wenn Sie dem Date-Konstruktor separate Argumente übergeben, können Sie weitere nützliche Ausgaben erhalten, wie im Folgenden beschrieben
Anmerkung: Argumente können vom Typ Zahl oder String sein. Ich werde Beispiele mit gemischten Werten zeigen.
Ermittelt den ersten Monat und Tag eines bestimmten Jahres
new Date(2011, 0); // Normal behavior as months in this case are zero based.
// => Sat Jan 01 2011 00:00:00 GMT-0700 (MST)
Ermittelt den letzten Monat und Tag eines Jahres
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)
Beispiel für Zahlen- und String-Argumente. Beachten Sie, dass der Monat März ist, weil die Monate wieder auf Null basieren.
new Date(2011, "02");
// => Tue Mar 01 2011 00:00:00 GMT-0700 (MST)
Wenn wir dasselbe tun, aber mit einem Tag Null, erhalten wir etwas anderes.
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)
Durch Hinzufügen eines Tages von Null zu einem beliebigen Jahr und Monat wird der letzte Tag des Vormonats ermittelt. Wenn Sie mit negativen Zahlen fortfahren, können Sie einen weiteren Tag zurückrollen
new Date(2011, "02", -1);
// => Sun Feb 27 2011 00:00:00 GMT-0700 (MST)