Heim > Backend-Entwicklung > Golang > Warum gelingt es durch manuelles Hinzufügen eines UTC-Offsets nicht, UTC in Go genau in Ortszeit umzuwandeln?

Warum gelingt es durch manuelles Hinzufügen eines UTC-Offsets nicht, UTC in Go genau in Ortszeit umzuwandeln?

Linda Hamilton
Freigeben: 2024-12-26 06:25:11
Original
152 Leute haben es durchsucht

Why Does Manually Adding UTC Offset Fail to Accurately Convert UTC to Local Time in Go?

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)
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage