Zeitzonen
Mit Ortsangaben arbeiten
Zeitzonen ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Zeitangaben enthalten eine Location
Jede time.Time hat eine zugehörige Location (Zeitzone). Derselbe Zeitpunkt kann je nach Zone unterschiedlich dargestellt werden.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
fmt.Println(t.Location())
}UTC und Local
Zwei integrierte Locations stehen immer zur Verfügung:
time.UTCfür die koordinierte Weltzeit.time.Localfür die lokale Zone des Computers.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
fmt.Println(t.UTC().Hour())
}Eine benannte Zone laden
time.LoadLocation(name) sucht eine IANA-Zone wie "Europe/Istanbul" oder "America/New_York".
package main
import (
"fmt"
"time"
)
func main() {
loc, err := time.LoadLocation("UTC")
fmt.Println(loc, err)
}Zeitzonen mit In umwandeln
t.In(loc) gibt denselben Zeitpunkt zurück, dargestellt in einer anderen Zone. Der zugrunde liegende Zeitpunkt ändert sich nicht, sondern nur seine Darstellung.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
fmt.Println(t.In(time.UTC).Hour())
}Gleicher Zeitpunkt, andere Uhrzeit
Mittag in UTC ist ein einzelner Zeitpunkt, aber eine Person in einer anderen Zone sieht eine andere Uhrzeit. Die Sub-Differenz zwischen beiden ist null.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
u := t.UTC()
fmt.Println(t.Sub(u))
}Zeit in einer Zone erzeugen
Übergeben Sie eine Location als letztes Argument an time.Date, um eine Zeit direkt in dieser Zone zu erzeugen.
package main
import (
"fmt"
"time"
)
func main() {
loc, _ := time.LoadLocation("UTC")
t := time.Date(2026, 5, 30, 9, 0, 0, 0, loc)
fmt.Println(t.Hour())
}Den Zonen-Offset auslesen
t.Zone() gibt die Abkürzung der Zone und ihren Offset von UTC in Sekunden zurück.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
name, offset := t.Zone()
fmt.Println(name, offset)
}Feste Zonen
Wenn Sie keine vollständigen IANA-Regeln benötigen, erzeugt time.FixedZone(name, offsetSeconds) eine einfache Zone mit konstantem Offset.
package main
import (
"fmt"
"time"
)
func main() {
loc := time.FixedZone("GMT+3", 3*3600)
t := time.Date(2026, 5, 30, 12, 0, 0, 0, loc)
name, off := t.Zone()
fmt.Println(name, off)
}Über Zonen hinweg formatieren
Wandeln Sie den Zeitstempel vor dem Formatieren mit In um, damit er in der Zeitzone der lesenden Person angezeigt wird.
package main
import (
"fmt"
"time"
)
func main() {
loc := time.FixedZone("GMT+3", 3*3600)
t := time.Date(2026, 5, 30, 12, 0, 0, 0, time.UTC)
fmt.Println(t.In(loc).Format("15:04 MST"))
}UTC speichern, lokal anzeigen
Eine weit verbreitete Regel lautet: Speichern und berechnen Sie in UTC und wandeln Sie Zeiten erst bei der Anzeige für Benutzer in eine lokale Zone um. Dadurch vermeiden Sie Mehrdeutigkeiten.
package main
import (
"fmt"
"time"
)
func main() {
stored := time.Date(2026, 5, 30, 9, 0, 0, 0, time.UTC)
loc := time.FixedZone("GMT+2", 2*3600)
fmt.Println("shown:", stored.In(loc).Hour())
}Fehler beim Laden behandeln
LoadLocation kann fehlschlagen, wenn die Zonendatenbank fehlt oder der Name unbekannt ist. Prüfen Sie den Fehler immer.
package main
import (
"fmt"
"time"
)
func main() {
_, err := time.LoadLocation("Mars/Olympus")
if err != nil {
fmt.Println("unknown zone")
}
}Kurze Überprüfung
Was ändert t.In(loc)?
Zusammenfassung: Zeitzonen
Sie haben gelernt, mit Locations zu arbeiten:
- Jede Zeitangabe hat eine Location;
UTCundLocalsind integriert. - Laden Sie benannte Zonen mit
LoadLocationoder erzeugen Sie Offsets mitFixedZone. - Wandeln Sie mit
Inum; speichern Sie in UTC und zeigen Sie Zeiten lokal an.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 15, 0, 0, 0, time.UTC)
loc := time.FixedZone("GMT-5", -5*3600)
fmt.Println(t.In(loc).Format("15:04 MST"))
}Häufig gestellte Fragen
Ist die Lektion „Zeitzonen“ kostenlos?
Ja — der vollständige Text von „Zeitzonen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Zeitzonen“?
Mit Ortsangaben arbeiten Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Go Academy zu starten?
Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Zeitzonen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?
Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.