.NET DateTime ISO Format Probleme in JavaScript für Chrome und Firefox


Wenn ich Werte von .NET per JSON an eine Webseite sende dann verwendete ich für Datumswerte aktuell meist die ToString Funktion mit “O”, was das Datum im ISO Format als String ausgibt (dachte ich). Leider hängt der Ausgabestring aber davon ab, wie das Date Objekt erstellt wurde und der Datumsstring kann daher entsprechend “variieren”. Denn wenn man DateTime.Now.ToString(“O”) verwendet dann wird ebenfalls die Zeitzone (bei mir UTC +1) im String mit ausgegeben z.B.:

2015-01-04T00:00:00.0000000+01:00

Wenn man aber ein neues DateTime Objekt erstellt mit

new DateTime(2015, 1, 1,15,12,0).ToString("O")

wird natürlich keine Zeitzone einberechnet und man erhält den folgenden String:

2015-01-01T15:12:00.0000000

Das stellt in der .NET Welt erst einmal noch kein Problem dar. Wenn man die Datums- und Zeitwerte aber im Browser benötigt und die Uhrzeit bearbeiten möchte, hat man aktuell ein Problem mit dem Format ohne dem UTC+1. Denn wenn der Wert verwendet wird, dann ergibt das in unterschiedlichen Browsern unterschiedliche Zeitangaben.

var dat = new Date("2014-12-15T14:59:29.7370000");
var datumStr = dat.toLocaleString();
//FireFox und IE: 15.12.2014 14:59:29
//Chrome: 15.12.2014 15:59:29

Daher achte ich aktuell darauf das ich das String Format für DateTime Werte “selbst” definiere und nicht auf die Standard ISO Konvertierung von .NET setze. Ich verwende z.B. den folgenden Format String, mit diesem kommt es nicht zum oben angegebenen Problem.

string datum = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
//Ausgabe: 2015-01-04T19:10:50.801Z

Quelle:

http://rupertmaier.wordpress.com/2014/04/25/parsing-c-datetime-without-timezone-indication-to-a-cross-browser-valid-date-object-2/

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s