toDateString() dekrementiert mein Tag
Für den folgenden code:
var d = new Date("2013-07-01");
console.log(d.toDateString());
Gibt es Sun Jun 30 2013, die einen Tag weniger von dem, was eingegeben wurde. Was passiert mit dem Objekt? Welches Datum ist eigentlich gespeichert?
console.log(d.toUTCString())
- Ich Liebe diese Art von Fragen, weil, wenn Sie gefragt 12 Stunden ab jetzt würde es kein Problem sein.
- Mit diesem bestimmten Problem nicht wirklich. 🙂
- gleiche Problem: (new Date('2012-12-01')).getMonth() === 10?
- "YYYY-MM-DD" wird analysiert, wie UTC: stackoverflow.com/questions/17893896/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Datum geparst wird als UTC-Datum, aber die
toDateString()
Ausgänge, was zu dieser Zeit in der lokalen Zeitzone.Versuchen, diese stattdessen
2013-07-01 00:00:00 UTC
Analysieren einer
Date
aus einem string können unterschiedliche Ergebnisse liefern, je nachdem, welche browser - /Laufzeit, die Sie verwenden. Es ist einen chart hier, listet einige der Browser und was Sie unterstützen.Aber im Allgemeinen, eine Zeichenfolge wie
"2013-07-01"
behandelt wird, als ob es waren um Mitternacht in UTC.Wenn Sie wollte, um zu analysieren, es in die lokale Zeit, die Sie nutzen könnten
"2013/07/01"
. Aber das ist ein bisschen seltsam. Sie könnten versucht sein, verwenden Sie"07/01/2013"
, aber das könnte so interpretiert werden, entweder, Jan 7. oder 1. Juli. Diese sind immer noch die Umsetzung-spezifisch.Wenn Sie möchten, eine Allgemeine, "funktioniert überall" - Lösung, haben Sie ein paar verschiedene Optionen:
Option 1
Nicht analysiert werden. Verwenden Sie den Konstruktor, akzeptieren Ganzzahlen.
Mit diesem code die aktuelle UTC-Zeit gespeichert wird, zu variieren, je nach Ihrer eigenen Zeitzone. Aber da
.toDateString()
auch dauert, die Zeit zu berücksichtigen, dann sollten Sie ok sein.Option 2
Analysieren es als UTC, und display es als UTC/GMT:
Aber diese Ausgabe hat vermutlich mehr als Sie gesucht haben, und es kann immer noch anders Aussehen in verschiedenen Browsern.
Option 3
Verwenden Sie die moment.js Bibliothek, wo Sie Steuern die Formatierung genau, jedoch, das Sie wünschen.
IMHO, ist dies die beste Lösung. Aber es bedeutet, müssen Sie verwenden eine Bibliothek.
Option 4
Dieser Ansatz funktioniert ziemlich gut und erfordert keine 3rd-party-Bibliotheken.
2013-06-30T22:00:00.000Z
für mich. Für die Festsetzung es, sollten Sie konvertieren Sie es in utc, bevor Sie zuDate()
Konstruktor:var mydate = new Date(Date.UTC(parts[0],parts[1]-1,parts[2]));
.