Zum Inhalt

Datum und Zeit in Go

Datumsformat

Go verwendet ein recht eigensinniges Datumsformat. Anstatt Zeichen wie Y, M, D usw. zu verwenden, gibt es ein Referenzdatum. Die einzelnen Werte des Referenzdatums - die sich vom Wert nicht überschneiden - können zur Festlegung des gewünschten Datums verwendet werden.

Das Referenzdatum in Go

2006-01-02 15:04:05
  • Jahr: 2006
  • Monat: 01
  • Tag: 02
  • Stunde: 15
  • Minute: 04
  • Sekunde: 05
  • Monatsname: January bzw. Jan
  • Wochentag: Monday bzw. Mon

Das bedeutet: möchte man ein Datum im alten deutschen Format ausgeben, verwendet man (anstatt DD.MM.YYYY) "02.01.2006". Dieses Beispiel gibt das heutige Datum aus:

time.Now().Format("02.01.2006") // 24.03.2023

Datumsobjekt erzeugen

myDate := time.Now()

Datumsobjekt verändern

Zum Verändern eines Datums (z.B. Tage dazuzählen oder abziehen) gibt es die Funktion AddDate. Diese hat drei Parameter years, months und days. Entsprechend werden Jahre, Monate oder Tage hinzugezählt oder abgezogen, falls die Werte negativ sind.

// 5 Tage addieren
mydate := time.Now().Add(0, 0, 5)

// 1 Monate abziehen
mydate := time.Now().Add(0, -1, 0)

Aktuelles Jahr

currentYear := time.Now().Format("2006")

ISO-Format

fmt.Println(time.Now().Format("2006-01-02"))

Zeitdauer messen

start := time.Now()
...
elapsed := time.Since(start)
fmt.Println("execution time:", elapsed)

Datum parsen

package main

import (
  "fmt"
  "log"
  "time"
)

// Datumsformat
const MY_DATE_FORMAT = "2006-01-02"

func main() {
  mein_datums_string := "2022-03-28"
  t, err := time.Parse(MY_DATE_FORMAT, mein_datums_string)
  if err != nil {
    // Ausgabe, wenn der String NICHT mit dem
    // erwarteten Datumsformat geparst werden konnte
    log.Fatal(err)
  }
  // Ausgabe des erfolgreich geparsten Datums
  fmt.Println(t)
}

Feedback / Kontakt

Wenn Sie Fragen oder Anregungen zum Artikel Datum und Zeit in Go haben, senden Sie mir bitte eine E-Mail an: go+date@technotes.jakoubek.net