2012-08-07 7 views
5

ich mit einem JavaScript-Date-Objekt erstellen:Parst JSON (ISO8601) Datum Zeichenfolge in JavaScript

var d=new Date('2012-08-07T07:47:46Z'); 
document.write(d); 

Dies wird das Datum schreibt die Zeitzone des Browsers. Aber ich soll tun können (keine ‚Z‘):

var d=new Date('2012-08-07T07:47:46'); 
document.write(d); 

Dies gibt das gleiche wie oben, sondern nach dem ISO8601-Standard, eine Zeichenfolge ohne Zeitzone (zB +01: 00) und ohne " Z 'sollte das Datum in der lokalen Zeitzone berücksichtigt werden. Also sollte das zweite Beispiel oben die Datetime als 7:47 Uhr schreiben.

Ich bekomme eine Datetime-Zeichenfolge von einem Server und ich möchte genau diese Datetime anzeigen. Irgendwelche Ideen?

Antwort

-1

Sie haben Recht, Javascript spielt nicht gut mit der ISO8601.

Mit dieser Funktion in das gewünschte Format konvertieren:

function ISODateString(d) { 
    function pad(n){ 
    return n<10 ? '0'+n : n 
    } 
    return d.getUTCFullYear()+'-' 
    + pad(d.getUTCMonth()+1)+'-' 
    + pad(d.getUTCDate())+'T' 
    + pad(d.getUTCHours())+':' 
    + pad(d.getUTCMinutes())+':' 
    + pad(d.getUTCSeconds())+'Z' 
} 
var d = new Date(); 
print(ISODateString(d)); 

Entnommen: Mozilla

+4

Dies erstellt eine ISO-Datumszeichenfolge, es analysiert es nicht –

6

fand ich dieses Skript gut funktioniert. Es erweitert die Date.parse-Methode.

https://github.com/csnover/js-iso8601/

Date.parse('2012-08-07T07:47:46'); 

Es funktioniert nicht auf dem new Date() jedoch Konstruktor.