Im bereitgestellten Go-Code-Snippet zielt die parseAndPrint-Funktion darauf ab, eine bestimmte Zeit zu analysieren und in der angegebenen Zeitzone anzuzeigen. Es wird jedoch unabhängig von der gewählten Zeitzone immer „[Datum] 05:00:00 0000 UTC“ zurückgegeben. Um dieses Problem zu lösen, ist ein tieferes Verständnis der Zeitzonenanalyse und -konvertierung unerlässlich.
Wenn Sie einen Zeitwert analysieren, tun Sie dies normalerweise in Ihrer aktuellen lokalen Zeitzone. Zeitzonenabkürzungen sind jedoch spezifisch für den Standort, von dem aus Sie analysieren. Wenn Sie Zeiten aus verschiedenen Zeitzonen analysieren müssen, müssen Sie explizit den entsprechenden Zeitort oder Zeitzonenversatz angeben.
Das Problem im bereitgestellten Code liegt in der Zeile wo Die Testzeit wird mit time.Date erstellt. Diese Zeile setzt die Zeitzone der Testzeit auf die lokale Zeitzone des Systems, auch wenn Sie beim Parsen der Eingabezeichenfolge einen Zeitzonenparameter angeben. Daher führt die Umrechnung der Testzeit in UTC immer zum gleichen Offset wie die lokale Zeitzone.
Um dieses Problem zu beheben, müssen Sie die Testzeit mithilfe der bereitgestellten Zeitzoneninformationen erstellen. Dies kann erreicht werden, indem das entsprechende Zeit-Ort-Objekt mit time.LoadLocation geladen und dann die Eingabezeichenfolge an diesem Ort mit time.ParseInLocation analysiert wird. Die resultierende Zeit weist den richtigen Zeitzonenversatz auf.
Abhängig von Ihren spezifischen Anforderungen können Sie alternative Ansätze für die Handhabung von Zeitzonen und Konvertierungen in Betracht ziehen:
Das obige ist der detaillierte Inhalt vonWarum gibt meine Go-Zeitzonenkonvertierung immer UTC zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!