Arbeiten mit Daten in Go (Golang): Bibliotheken time, carbon und now

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

Arbeiten mit Daten in Go (Golang): Überblick über Bibliotheken



Die Arbeit mit Datum und Zeit ist eine der Kernaufgaben in jeder Programmiersprache. In Go (Golang) bietet die Standardbibliothek das leistungsstarke Paket time, aber manchmal greifen Entwickler aus Bequemlichkeit auf Drittanbieter-Bibliotheken zurück. In diesem Artikel werden wir die wichtigsten Funktionen des Standardpakets durchgehen und zwei beliebte Bibliotheken betrachten: carbon und now.



1. Das Standardpaket time



Das Paket time ist die Grundlage für die Arbeit mit Daten in Go. Es enthält die Typen Time, Duration, Funktionen zum Parsen, Formatieren sowie für die Arbeit mit Timern und Zeitzonen.



Erstellen und Formatieren eines Datums



package main

import ( "fmt" "time")

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

// Erstellen eines bestimmten Datums date := time.Date(2025, time.March, 15, 14, 30, 0, 0, time.UTC) fmt.Println("Bestimmtes Datum:", date)

// Formatierung (zwingend "2006-01-02 15:04:05" als Referenz) fmt.Println("Format:", date.Format("02.01.2006 15:04:05"))}


Parsen eines Strings in ein Datum



func main() {    // Parsen mit Angabe des Formats    str := "2025-03-15 14:30:00"    parsed, err := time.Parse("2006-01-02 15:04:05", str)    if err != nil {        panic(err)    }    fmt.Println("Geparst:", parsed)}


Arbeiten mit Zeitzonen



func main() {    loc, _ := time.LoadLocation("Europe/Moscow")    moscowTime := time.Now().In(loc)    fmt.Println("Moskauer Zeit:", moscowTime)}


Differenz zwischen Daten



func main() {    start := time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC)    end := time.Date(2025, 12, 31, 23, 59, 59, 0, time.UTC)    duration := end.Sub(start)    fmt.Printf("Differenz: %v (Stunden: %v)", duration, duration.Hours())}


2. Die Bibliothek carbon



Die Bibliothek carbon (github.com/golang-module/carbon) ist ein Port der beliebten PHP-Bibliothek Carbon für Go. Sie bietet eine praktische Fluent-Schnittstelle für die Arbeit mit Daten.



Installation



go get github.com/golang-module/carbon/v2


Anwendungsbeispiele



package main

import ( "fmt" "github.com/golang-module/carbon/v2")

func main() { // Aktuelles Datum now := carbon.Now() fmt.Println("Jetzt:", now.ToString())

// Datum erstellen date := carbon.Parse("2025-03-15 14:30:00") fmt.Println("Geparst:", date.ToDateString())

// Tage hinzufügen future := carbon.Now().AddDays(10) fmt.Println("In 10 Tagen:", future.ToDateString())

// Differenz in Tagen diff := carbon.Now().DiffInDays(carbon.Parse("2025-12-31")) fmt.Printf("Bis Neujahr: %d Tage", diff)

// Formatierung fmt.Println("Benutzerdefiniertes Format:", carbon.Now().Format("d/m/Y H:i:s"))}


Praktische Methoden



  • StartOfDay() / EndOfDay() — Beginn/Ende des Tages
  • IsWeekend() / IsWeekday() — Prüfung des Wochentags
  • Age() — Alter ab Geburtsdatum
  • DiffForHumans() — menschenlesbare Differenz (z.B. "vor 3 Tagen")


3. Die Bibliothek now



Die Bibliothek now (github.com/jinzhu/now) vom Ersteller von GORM ist ein leichtes Dienstprogramm zum Ermitteln von Beginn und Ende von Zeiträumen.



Installation



go get github.com/jinzhu/now


Anwendungsbeispiele



package main

import ( "fmt" "time" "github.com/jinzhu/now")

func main() { // Beginn des Tages beginningOfDay := now.BeginningOfDay() fmt.Println("

Empfehlungen