2010-08-25 6 views
10

ich mit Daten in einem RSS-Feed arbeite, aber ich bin die Suche nach unterschiedlichen Ergebnissen, wenn Sie den Code unten in IE, Chrome und Firefox:Problem mit Datumsformaten in JavaScript mit verschiedenen Browsern

new Date('2001-01-01T12:00:00Z') 

Firefox ist glücklich mit aber Chrome und IE geben ein ungültiges Datum zurück.

Ich dachte, ich würde versuchen, die T und Z wie folgt ersetzt:

new Date('2001-01-01 12:00:00') 

Dieses Mal Chrome damit glücklich ist, aber Firefox und IE Ungültiges Datum zurück.

Irgendwelche Ideen, was ich tun sollte, um ein Date-Objekt in allen Browsern mit diesem Format zu bekommen ?!

Vielen Dank, Tim

Antwort

23

Diese in allen Browsern auf meiner Box funktioniert - versuchen Sie es in der Konsole:

alert(new Date('2001/01/31 12:00:00')) 

so

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/[T|Z]/g,' ')) 

IE8, FF3.6, Safari4, Chrome

+1

Sie haben Recht, das funktioniert, und es ist eine bessere Lösung als meine. – NicolasT

+0

Vielen Dank! Getestet und arbeitet für mich in IE, FF, Chrome und Opera! – TimS

+0

Wie mache ich das mit FF mit Zeitzone arbeiten? Weil dieses 'neue Datum (2001-01-01T12: 00: 00 + 1000'.replace (/ \ -/g, '\ /'). Ersetzen (/ [T | Z]/g, ''))' Return Ungültiges Datum in FF, funktioniert aber in IE/Chrome –

1

Können Sie versuchen:

new Date(2001,0,1,12,0,0) 

Das bedeutet:

new Date(year,month,day,hour,minutes,seconds) 
+3

Sie meinen new Date (2001,0,1,12,0,0) seit JS Monate mit 0 – mplungjan

+0

ich anfangen werde bearbeiten, haben Sie recht – NicolasT

+0

mit führenden 0s vorsichtig. 08 und 09 sind ungültige Oktalzahlen – mplungjan

3

Sie auch versuchen Date.js verwenden könnte - eine Open-Source-JavaScript-Datum Manipulation Bibliothek.

+0

Ausgezeichneter Vorschlag! Danke – TimS

+0

Auch momentjs (www.momentjs.com) hämmert Browser Diskrepanzen. – Quango

3

Diese auf allen großen 5-Browsern funktioniert und bewirkt, dass alle Browser die Zeit als GMT/UTC statt Ortszeit erkennen (die Z-Suffix bedeutet die Zeit ist UTC):

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/T/,' ').replace(/Z/,' -0')) 

I mplungjan danken für seine Antwort.