Arbeiten mit Daten in Go (Golang): Überblick über Bibliotheken zum Parsen, Formatieren und Manipulieren

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): Bibliotheken und Werkzeuge



Die Sprache Go (Golang) bietet eine leistungsstarke Standardbibliothek time, die die meisten Aufgaben im Umgang mit Datum und Uhrzeit abdeckt. Für komplexe Operationen wie das Parsen nicht standardisierter Formate, die Arbeit mit relativen Daten oder Berechnungen mit Geschäftskalendern hat die Community jedoch eine Reihe nützlicher Bibliotheken entwickelt. In diesem Artikel betrachten wir sowohl die integrierten Möglichkeiten von Go als auch die besten Drittanbieter-Pakete für die Arbeit mit Daten.



1. Die integrierte Bibliothek time



Die Standardbibliothek time ist die Grundlage für alle Datumsoperationen in Go. Sie bietet:

  • Die Typen Time, Duration, Location
  • Funktionen zum Abrufen der aktuellen Zeit, Erstellen von Daten, Parsen und Formatieren
  • Unterstützung für Zeitzonen und monotone Uhren


Aktuelle Zeit abrufen

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("Aktuelle Zeit:", now) fmt.Println("Jahr:", now.Year()) fmt.Println("Monat:", now.Month()) fmt.Println("Tag:", now.Day())}


Datumsformatierung

In Go wird ein spezielles Referenzformat verwendet: Mon Jan 2 15:04:05 MST 2006 (1,2,3,4,5,6 – Ziffern in aufsteigender Reihenfolge).

now := time.Now()fmt.Println(now.Format("2006-01-02 15:04:05"))   // 2025-03-15 14:30:00fmt.Println(now.Format("02 Jan 2006"))           // 15 Mar 2025fmt.Println(now.Format(time.RFC3339))            // 2025-03-15T14:30:00Z


Parsen von Zeichenketten

dateStr := "2025-03-15 14:30:00"t, err := time.Parse("2006-01-02 15:04:05", dateStr)if err != nil {    panic(err)}fmt.Println(t) // 2025-03-15 14:30:00 +0000 UTC


Arbeiten mit Zeitzonen

loc, _ := time.LoadLocation("Europe/Moscow")moscowTime := time.Now().In(loc)fmt.Println("Moskauer Zeit:", moscowTime.Format("15:04:05"))


2. Die Bibliothek carbon



Das Paket github.com/golang-module/carbon ist das Go-Äquivalent zur beliebten PHP-Bibliothek Carbon. Es bietet eine praktische API für die Arbeit mit Daten, einschließlich relativer Daten, menschenlesbarer Formate und Methodenverkettung.



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(now.ToDateString()) // 2025-03-15

// Relative Daten fmt.Println(now.AddDays(7).ToDateString()) // 2025-03-22 fmt.Println(now.SubMonths(1).ToDateString()) // 2025-02-15 fmt.Println(now.StartOfMonth().ToDateString()) // 2025-03-01 fmt.Println(now.EndOfMonth().ToDateString()) // 2025-03-31

// Menschenlesbare Formate fmt.Println(now.DiffForHumans()) // 刚刚 (gerade eben)

// Parsen mit Unterstützung vieler Formate t := carbon.Parse("2025-03-15 14:30:00") fmt.Println(t.ToDateTimeString()) // 2025-03-15 14:30:00

// Arbeiten mit Zeitzonen cst := carbon.Now(carbon.NewYork) fmt.Println(cst.ToDateTimeString()) // Zeit in New York}


3. Die Bibliothek now



Das Paket github.com/jinzhu/now (vom Autor von GORM) bietet praktische Funktionen zum Abrufen von Beginn und Ende von Zeiträumen.



Installation

go get github.com/jinzhu/now


Beispiele

package main

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

func main() { t := time.Now() fmt.Println(now.BeginningOfMonth(t)) // 2025-03-01 00:00:00 fmt.Println(now.EndOfMonth(t)) // 2025-03-31 23:59:59 fmt.Println(now.BeginningOfYear(t))

Empfehlungen