Chrome & Firefox: Standard-JavaScript-Datumskonstruktor dauert ISO 8601 Datumszeichenkette. Zum Beispiel:
var sampleDate = new Date("2010-03-07T02:13:46Z");
Returns dieses Date-Objekt: "Sun 7. März 2010 13.13.46 GMT + 1100 (AUS Eastern Daylight Time)"
Dies funktioniert nicht in IE (einschließlich der neuesten 9 IE)
Hier ist eine Cross-Browser-Lösung von Paul Sowden bei http://delete.me.uk/2005/03/iso8601.html:
Date.prototype.setISO8601 = function (string) {
var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
"(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
"(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
var d = string.match(new RegExp(regexp));
var offset = 0;
var date = new Date(d[1], 0, 1);
if (d[3]) { date.setMonth(d[3] - 1); }
if (d[5]) { date.setDate(d[5]); }
if (d[7]) { date.setHours(d[7]); }
if (d[8]) { date.setMinutes(d[8]); }
if (d[10]) { date.setSeconds(d[10]); }
if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
if (d[14]) {
offset = (Number(d[16]) * 60) + Number(d[17]);
offset *= ((d[15] == '-') ? 1 : -1);
}
offset -= date.getTimezoneOffset();
time = (Number(date) + (offset * 60 * 1000));
this.setTime(Number(time));
}
Verbrauch:
var date = new Date();
date.setISO8601("2005-03-26T19:51:34Z");
Wenn Sie viele Datetime-Manipulation in JavaScript machen, kann ich auch vorschlagen, einige JS-Bibliotheken wie MomentJS zu überprüfen. Es behandelt einige gängige Dinge wie das Parsen von Daten, Formatieren und Berechnen der Differenz zwischen zwei Daten und unterstützt mehrere Lokalisierungen.
Ich wollte es nicht als ein Duplikat dieser Frage schließen: '( – Ryan
Ich stimme nicht zu, dass dies eine genaue Kopie der Frage ist. Das Analysieren von ISO-Zeitstempeln ist ein anderes Anliegen als menschliche Eingaben zu analysieren. – Andrew