Arbeiten mit Datum und Uhrzeit in Go: Von den Grundlagen bis zu fortgeschrittenen Techniken

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in die Arbeit mit Datum und Uhrzeit in Go

Die Arbeit mit Datum und Uhrzeit ist eine der Kernaufgaben in jeder ernsthaften Anwendung. Ob es um die Protokollierung von Ereignissen, die Berechnung von Timeouts, die Arbeit mit Zeitplänen oder die Analyse von Zeitreihen geht, die Sprache Go bietet ein leistungsstarkes und elegantes Toolkit im Standardpaket time. In diesem Artikel behandeln wir die Arbeit mit Datum und Uhrzeit in Go von A bis Z: von der Erstellung von Zeitobjekten bis hin zu komplexen Operationen mit Zeitzonen und Timern.



Grundlagen: Die Struktur time.Time und das Erstellen von Daten

Das zentrale Element des Pakets time ist die Struktur time.Time. Sie repräsentiert einen Zeitpunkt mit Nanosekunden-Genauigkeit und Informationen zur Zeitzone.



Aktuelle Zeit abrufen

Das häufigste Szenario ist das Abrufen des aktuellen Zeitpunkts:

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("Aktuelle Zeit:", now)}


Erstellen eines bestimmten Datums

Zum Erstellen eines Datums wird die Funktion time.Date() verwendet. Beachten Sie: In Go werden Monate über Konstanten (time.January, time.February usw.) oder als Zahl von 1 bis 12 angegeben.

func main() {    // 15. März 2025, 14:30:00, UTC    specificDate := time.Date(2025, time.March, 15, 14, 30, 0, 0, time.UTC)    fmt.Println("Bestimmtes Datum:", specificDate)        // Erstellen mit Nanosekunden    preciseDate := time.Date(2025, 3, 15, 14, 30, 0, 123456789, time.UTC)    fmt.Println("Präzises Datum:", preciseDate)}


Formatieren und Parsen von Daten

Go verwendet einen einzigartigen Ansatz zur Formatierung: Anstelle von Codes wie %Y-%m-%d verwenden Sie die Referenzzeit Mon Jan 2 15:04:05 MST 2006 (die als 01 02 03 04 05 06 07 gelesen wird – Jahr, Monat, Tag, Stunde, Minute, Sekunde, Jahr).



Formatieren (time → String)

Die Methode Format() wandelt die Zeit gemäß einer angegebenen Vorlage in einen String um:

func main() {    now := time.Now()        // Standardformate    fmt.Println("RFC3339:", now.Format(time.RFC3339))    fmt.Println("Datum:", now.Format("2006-01-02"))    fmt.Println("Uhrzeit:", now.Format("15:04:05"))    fmt.Println("Vollformat:", now.Format("02.01.2006 15:04:05"))    fmt.Println("Mit Wochentag:", now.Format("Mon, 02 Jan 2006"))}


Parsen (String → time.Time)

Die Funktion time.Parse() zerlegt einen String in eine Zeitstruktur. Wichtig: Die Vorlage muss exakt dem Format des Eingabestrings entsprechen.

func main() {    // Parsen mit bekanntem Format    dateStr := "2025-03-15 14:30:00"    parsed, err := time.Parse("2006-01-02 15:04:05", dateStr)    if err != nil {        panic(err)    }    fmt.Println("Geparst:", parsed)        // Parsen mit Zeitzone    dateWithZone := "2025-03-15T14:30:00+03:00"    parsedWithZone, _ := time.Parse(time.RFC3339, dateWithZone)    fmt.Println("Mit Zeitzone:", parsedWithZone)}


Zeitarithmetik: Intervalle und Vergleiche

Das Paket time stellt den Typ Duration zur Darstellung von Zeitintervallen und Methoden für arithmetische Operationen bereit.



Addition und Subtraktion

func main() {    now := time.Now()        // Hinzufügen von 2 Stunden 30 Minuten    future := now.Add(2*time.Hour + 30*time.Minute)    fmt.Println("In 2,5 Stunden:", future)        // Subtraktion von 7 Tagen    past := now.Add(-7 * 24 * time.Hour)    fmt.Println("Vor einer Woche:", past)        // Verwendung von AddDate für kalendarische Daten    nextMonth := now.AddDate(0, 1, 0)    fmt.Println("In einem Monat:", nextMonth)}


Berechnung der Differenz zwischen Daten

Die Methode Sub() gibt eine Duration zurück:

func main() {    start := time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC)    end                

Blogs

Buchempfehlungen