Ich habe so viele verschiedene Standards für das JSON-Datumsformat gesehen:
"\"\\/Date(1335205592410)\\/\"" .NET JavaScriptSerializer
"\"\\/Date(1335205592410-0500)\\/\"" .NET DataContractJsonSerializer
"2012-04-23T18:25:43.511Z" JavaScript built-in JSON object
"2012-04-21T18:25:43-05:00" ISO 8601
Welcher ist der richtige? Oder am besten? Gibt es dafür eine Art Standard?
JSON selbst gibt nicht an, wie Datumsangaben dargestellt werden sollen, JavaScript hingegen schon.
Sie sollten das von Date
's toJSON
Methode ausgegebene Format verwenden:
2012-04-23T18:25:43.511Z
Hier ist der Grund dafür:
Es ist für Menschen lesbar, aber auch kurz und bündig
Er sortiert richtig
Es enthält Sekundenbruchteile, die helfen können, die Chronologie wiederherzustellen
Sie entspricht der ISO 8601
Die ISO 8601 ist seit mehr als einem Jahrzehnt international etabliert
Dessen ungeachtet kann jede jemals geschriebene Datumsbibliothek "Millisekunden seit 1970" verstehen. Für eine einfache Portabilität hat ThiefMaster also recht.
JSON weiß nichts über Daten. Was .NET tut, ist ein Nicht-Standard-Hack/Erweiterung.
Ich würde ein Format verwenden, das sich leicht in ein Date
-Objekt in JavaScript umwandeln lässt, d.h. eines, das an new Date(...)
übergeben werden kann. Das einfachste und wahrscheinlich portabelste Format ist der Zeitstempel, der Millisekunden seit 1970 enthält.
Es gibt kein richtiges Format; Die JSON-Spezifikation gibt kein Format für den Austausch von Daten vor, weshalb es so viele verschiedene Möglichkeiten gibt, dies zu tun.
Das beste Format ist wohl ein Datum im ISO 8601-Format (siehe Wikipedia); es ist ein bekanntes und weit verbreitetes Format und kann in vielen verschiedenen Sprachen verarbeitet werden, wodurch es sich sehr gut für die Interoperabilität eignet. Wenn Sie die Kontrolle über das generierte json-Format haben, z. B. wenn Sie anderen Systemen Daten im json-Format zur Verfügung stellen, ist die Wahl von 8601 als Datumsaustauschformat eine gute Wahl.
Wenn Sie keine Kontrolle über das generierte json-Format haben, z. B. wenn Sie json-Daten aus verschiedenen bestehenden Systemen verwenden, ist es am besten, eine Funktion zum Parsen des Datums zu haben, um die verschiedenen erwarteten Formate zu verarbeiten.