2015-10-13 6 views
6

Ich habe Arbeit mit Parsing Datetime Strings für unsere internationale Anwendung gearbeitet. Ich stoße auf ein Interpretationsproblem, das keine definitive Antwort zu finden scheint. Sollte eine ISO 8601 Datetime-Zeichenfolge ohne eine Zeitzonenkomponente als lokale Zeit behandelt werden?DateTime ISO 8601 ohne Zeitzone Komponente

Per wikipedia (was ich will nicht meine Geschäftsentscheidungen aus der Base):

Wenn keine UTC-Beziehungsinformationen mit einer Zeitdarstellung gegeben die Zeit wird angenommen, in lokal zu sein Zeit.

Allerdings finde ich keine Dokumentation über ISO Stütz- oder jede andere allgemein akzeptable Quelle der Wahrheit. Alles, was ich gefunden habe, spricht darüber, wie man mit Offsets für die lokale Zeit umgehen soll (z. B. +/- 0500 usw.). Angenommen, die lokale Zeit in diesen Fällen würde mir erheblich helfen, da meine Benutzer das gleiche Datum für alle Regionen einreichen können, ohne den spezifischen Offset für jede Region berechnen zu müssen.

Zum Beispiel:

2012-01-01T00:00:00 # Convert to local 
2012-01-01T00:00:00Z # Zulu/UTC...don't convert 

Gibt es eine etablierte Auslegung für Zeitzone lose ISO 8601 Strings?

Antwort

6

Abschnitt 4.2.2 von ISO 8601 gibt Beispiele ohne TZ-Bezeichner, die angeben, dass es sich um Ortszeiten handelt. 4.2.4 sagt UTC-Zeiten verwenden die 'Z' Bezeichner. Natürlich stellt sich immer die Frage "Ortszeit wo?" ...

+0

Ehrfürchtig, das ist, was ich gesucht habe. Es ist irgendwie lahm, dass die ISO-Dokumentation nicht "öffentlich" kostenlos zur Verfügung steht, weshalb ich sie beim ersten Mal vermisste. Gott segne Leute, die es trotzdem hochladen :) Es gibt ein inhärentes Attribut in der Benutzereingabe, das Region angibt, also ist der "Where" -Aspekt bereits erledigt. – Devin

0

Ohne den Zeitzonenbezeichner wird die Datetime-Zeichenfolge als lokale Zeit interpretiert - aber als lokale Zeit für den SERVER.

Wenn sich Ihre Benutzer in verschiedenen Zeitzonen befinden, werden die Daten, die sie ohne TZ-Informationen übermitteln, falsch mit Ihrem lokalen TZ-Offset interpretiert.