Bei einem früheren Versuch, Zeitzonencodes zu analysieren, lieferte der folgende Code durchweg das Ergebnis „[Datum] 05:00:00 0000 UTC“ unabhängig von der für parseAndPrint gewählten Zeitzone Funktion.
// time testing with arbitrary format package main import ( "fmt" "time" ) func main() { now := time.Now() parseAndPrint(now, "BRT") parseAndPrint(now, "EDT") parseAndPrint(now, "UTC") } func parseAndPrint(now time.Time, timezone string) { test, err := time.Parse("15:04:05 MST", fmt.Sprintf("05:00:00 %s", timezone)) if err != nil { fmt.Println(err) return } test = time.Date( now.Year(), now.Month(), now.Day(), test.Hour(), test.Minute(), test.Second(), test.Nanosecond(), test.Location(), ) fmt.Println(test.UTC()) }
Dieses Problem ergibt sich aus der Tatsache, dass time.Parse die Zeit am aktuellen Standort interpretiert, die möglicherweise nicht mit der beabsichtigten Zeitzone übereinstimmt.
Um Zeitzonencodes genau zu analysieren, besteht der richtige Ansatz darin, time.Location zu verwenden. Hier ist eine verbesserte Implementierung:
func parseAndPrint(now time.Time, timezone string) { location, err := time.LoadLocation(timezone) if err != nil { fmt.Println(err) return } test, err := time.ParseInLocation("15:04:05 MST", "05:00:00", location) if err != nil { fmt.Println(err) return } fmt.Println(test.UTC()) }
In diesem aktualisierten Code:
Das obige ist der detaillierte Inhalt vonWarum gibt mein Go-Code immer die UTC-Zeit zurück, obwohl ich mit „time.Parse' unterschiedliche Zeitzonen angegeben habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!