2017-05-08 2 views
-2

Dies ist JavaScript-Code, neues Date() gibt ungültigen Wert zurück. Muss ich das Datumsformat ändern, bevor es an das neue Date() übergeben wird? javascript new Date() gibt ungültigen Wert zurück

new Date("25-Feb-17"); 
+0

Funktioniert für mich in Chrom, ich finde es immer sicherer, Datumsobjekte wie 'neues Datum (Jahr, Monat, Tag, Stunden, Minuten, Sekunden, Millisekunden) zu erstellen' als dann weiß ich, dass sie richtig sind – George

+1

was Sie sonst noch tun erwarten von? – tire0011

+0

Es sollte nicht. Just probiert und es funktioniert gut hier: https://jsfiddle.net/dtppbuw4/ – binariedMe

Antwort

0

Sein nicht auf Firefox arbeiten, auf Chrome getestet und funktionierte gut, so empfehle ich Ihnen, die Standard-Date-Objekt Erstellung wie folgt zu verwenden:

new Date(year, month, day, hours, minutes, seconds, milliseconds) 
+0

Es gibt viele andere gültige Möglichkeiten, dies mit dem Date-Objekt – charlietfl

+0

zu tun. Richtig, deshalb schlage ich die Methodik vor, die ich verwenden würde, OP kann wählen, was immer er bevorzugt. –

2

On MDN, können Sie die folgenden zu dieser besonderen lesen Date Konstruktor:

Hinweis: Parsen von Datumszeichenfolgen mit dem Date-Konstruktor (und Date.parse, sie sind gleichwertig) wird dringend von Browserunterschieden und Inkonsistenzen abgeraten. Die Unterstützung für RFC 2822-Formatzeichenfolgen erfolgt nur nach Vereinbarung. Die Unterstützung für ISO 8601-Formate unterscheidet sich in diesem Datum - nur Strings (z. B. "1970-01-01") werden als UTC behandelt, nicht lokal.

Wenn Sie den Konstruktor wollen richtig in allen Browsern arbeiten, verwenden Sie entweder einen seiner anderen Varianten (auch auf der verlinkten Seite MDN beschrieben) oder zumindest umformatieren Ihr Datum String mit dem ISO8601 date representation kompatibel zu sein. Die letztgenannte Option funktioniert jedoch nicht 100% ig, da JavaScript eine etwas vereinfachte Konvention zur Darstellung von Datumsangaben als Strings verwendet. Sie könnten Eckenfälle finden, die scheitern werden.

Auch, wie in der zitierten Anmerkung, gibt es einen Vorbehalt. Vereinfachte Datumsformate wie "2017-02-25" werden als UTC behandelt, dann aber intern in Ihre lokale Zeitzone übersetzt. Angenommen, Sie sind auf der westlichen Hemisphäre, wird das Endergebnis am 24. Februar statt.

Verwandte Themen