Heim > Artikel > Backend-Entwicklung > Warum verwendet „time.Parse' von Go die Zeitzoneninformationen nicht korrekt?
Time.Parse verwendet keine Zeitzoneninformationen
F: Warum verwendet time.Parse keine Zeitzoneninformationen? Es sollte unterschiedliche Zeitwerte für verschiedene Zeitzonen liefern.
Im bereitgestellten Beispielcode wird die Funktion time.Parse verwendet, um zwei Zeitstempel zu analysieren: „2018-05-11 IST“ und „2018-05 -11 UTC“, unter Verwendung des Layouts „2006-01-02 MST“. Die Ausgabe zeigt jedoch, dass beide Zeitstempel zur gleichen Unix-Zeit führen:
Output: 1525996800 1525996800
Dies macht keinen Sinn, da IST und UTC unterschiedliche Zeitversätze haben.
A: Mehrdeutige Zeitzonenabkürzungen und Nullpunktverschiebung
Die Ursache dieses Problems liegt im Umgang mit mehrdeutigen Zeitzonenabkürzungen in time.Parse. Insbesondere geht time.Parse in Ermangelung eines bekannten Offsets für die angegebene Zeitzonenabkürzung von einer Zeitzone mit derselben Abkürzung und einem Null-Offset aus.
Im bereitgestellten Beispiel „IST“ ist eine mehrdeutige Abkürzung, die sich auf mehrere Zeitzonen (Indien, Irland, Israel usw.) beziehen kann. Daher interpretiert time.Parse es als eine erfundene Zeitzone mit einem Offset von Null und ignoriert effektiv den tatsächlichen Zeitunterschied zwischen IST und UTC.
Lösung: Verwenden von numerischen Zeitzonenoffsets oder Time.ParseInLocation()
Um dieses Problem zu beheben, gibt es mehrere Möglichkeiten verfügbar:
Das obige ist der detaillierte Inhalt vonWarum verwendet „time.Parse' von Go die Zeitzoneninformationen nicht korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!