UTC in Go mit Präzision in Ortszeit umrechnen
Frage:
In einem Versuch Um die UTC-Zeit für bestimmte Länder in die Ortszeit umzuwandeln, stößt ein Go-Programm trotz Berücksichtigung der UTC-Differenz auf falsche Ergebnisse. Was könnte das zugrunde liegende Problem sein?
Antwort:
Der Fehler tritt auf, wenn die Zeit durch manuelles Hinzufügen der UTC-Differenz als Dauer berechnet wird. Bei diesem Ansatz werden andere Faktoren wie die Sommerzeit (DST) nicht berücksichtigt.
Um die UTC-Zeit genau in die Ortszeit umzurechnen, ist die Verwendung von time.LoadLocation die richtige Methode. So können Sie es machen:
import "time" // A map of country names to their time zone names var countryTz = map[string]string{ "Hungary": "Europe/Budapest", "Egypt": "Africa/Cairo", } // Function to convert UTC time to the local time of a specific country func timeIn(name string) time.Time { loc, err := time.LoadLocation(countryTz[name]) if err != nil { panic(err) } return time.Now().In(loc) } // Example usage func main() { utc := time.Now().UTC().Format("15:04") hun := timeIn("Hungary").Format("15:04") eg := timeIn("Egypt").Format("15:04") fmt.Println(utc, hun, eg) }
Dieser Code definiert zunächst eine Zuordnung von Ländernamen zu den entsprechenden Zeitzonennamen. Anschließend wird time.LoadLocation verwendet, um die spezifische Zeitzone für ein bestimmtes Land abzurufen. Durch den Aufruf von time.Now().In(loc) wird die aktuelle UTC-Zeit unter Berücksichtigung der Sommerzeit und anderer Faktoren in die Ortszeit des gewünschten Landes umgewandelt.
Das obige ist der detaillierte Inhalt vonWarum gelingt es durch manuelles Hinzufügen eines UTC-Offsets nicht, UTC in Go genau in Ortszeit umzuwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!