Heim > Artikel > Backend-Entwicklung > Warum verarbeitet „time.Parse()' von Go keine Zeitzonenkennungen?
Warum time.Parse() in Go keine Zeitzonenkennungen analysiert
In Go wird die Funktion time.Parse() verwendet, um Analysieren Sie eine Datums- und Uhrzeitzeichenfolge in einen Zeitwert. Im Gegensatz zu anderen Datums- und Zeitbibliotheken analysiert time.Parse() jedoch Zeitzonenkennungen wie „EST“ oder „EDT“ nicht automatisch. Stattdessen wird die Zeitzone des aktuellen Systems verwendet, um den Zeitversatz zu bestimmen.
Das Problem
Der in der Frage bereitgestellte Code veranschaulicht dieses Problem. Es wird versucht, eine Datumszeichenfolge („2018 08 01 12:00 EDT“) mithilfe von time.Parse() auf zwei Arten zu analysieren: mit und ohne Angabe des gewünschten Zeitzonenstandorts (Amerika/New_York).
Bei Verwendung time.Parse() ohne Angabe eines Standorts wird die Zeitzonenkennung („EDT“) nicht erkannt und die Zeit wird als in der Zeitzone des aktuellen Systems liegend geparst („ 0000“). Dies führt zu einem falschen Zeitwert.
Die Lösung
Um eine Datums- und Uhrzeitzeichenfolge, die eine Zeitzonenkennung enthält, korrekt zu analysieren, muss die Funktion time.ParseInLocation() verwendet werden verwendet werden. Diese Funktion benötigt einen zusätzlichen Standortparameter, der die gewünschte Zeitzone für die analysierte Zeit angibt.
Im bereitgestellten Code wird time.LoadLocation() verwendet, um ein Standortobjekt für die gewünschte Zeitzone zu erstellen („Amerika/New_York "), bevor Sie es an time.ParseInLocation() übergeben. Dadurch wird sichergestellt, dass die Zeitzonenkennung („EDT“) korrekt geparst wird und der richtige Zeitwert zurückgegeben wird.
Alternative Lösungen
Alternativ kann man ein Datum und verwenden Zeitbibliothek, die das Parsen von Zeitzonen explizit unterstützt, z. B. die beliebte Bibliothek „time.go“. Diese Bibliothek bietet Funktionen wie ParseInZone(), die das direkte Parsen von Zeitzonenkennungen ermöglichen.
Das obige ist der detaillierte Inhalt vonWarum verarbeitet „time.Parse()' von Go keine Zeitzonenkennungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!