Arbeiten mit Daten in Go (Golang): vollständiger Überblick über Bibliotheken
Die Arbeit mit Datum und Zeit gehört zu den häufigsten Aufgaben in der Webentwicklung, Analytik und im Backend. In Go (Golang) bietet die Standardbibliothek time ein leistungsstarkes, aber nicht immer intuitives Toolkit. Zur Vereinfachung der Entwicklung gibt es zahlreiche Drittanbieter-Bibliotheken. In diesem Artikel werden wir die grundlegenden Ansätze und beliebten Bibliotheken für die Arbeit mit Daten in Go im Detail besprechen.
1. Das Standardpaket time
Das Paket time ist die Grundlage für die Arbeit mit Datum und Zeit in Go. Es enthält die Typen Time, Duration, Location sowie Funktionen zum Formatieren, Parsen und für Arithmetik.
Hauptfunktionen:
- Aktuelle Zeit:
time.Now() - Formatierung: Methode
.Format(layout string)– verwendet das spezielle ReferenzformatMon Jan 2 15:04:05 MST 2006(Go wurde 2006 geboren). - Parsing: Funktion
time.Parse(layout, value string). - Arithmetik: Methoden
.Add(d Duration),.Sub(t Time),.AddDate(y, m, d int). - Zeitzonen:
time.LoadLocation(name string)und Methode.In(loc *Location).
package main
import ( "fmt" "time")
func main() { // Aktuelle Zeit now := time.Now() fmt.Println("Jetzt:", now)
// Formatierung fmt.Println("Format RFC3339:", now.Format(time.RFC3339)) fmt.Println("Benutzerdefiniertes Format:", now.Format("02.01.2006 15:04:05"))
// Parsen eines Strings parsed, _ := time.Parse("2006-01-02", "2024-03-15") fmt.Println("Geparst:", parsed)
// Arbeit mit Zeitzonen loc, _ := time.LoadLocation("Europe/Moscow") moscowTime := now.In(loc) fmt.Println("Zeit in Moskau:", moscowTime)
// Arithmetik tomorrow := now.AddDate(0, 0, 1) fmt.Println("Morgen:", tomorrow.Format("02.01.2006"))}Besonderheit: Go verwendet ein einzigartiges Referenzformat (2006-01-02T15:04:05Z07:00), nicht das gewohnte YYYY-MM-DD. Das erfordert Eingewöhnung, vermeidet aber Mehrdeutigkeiten.
2. Die Bibliothek carbon (Analogon zu Carbon für PHP)
Die Bibliothek carbon ist ein Port der beliebten PHP-Bibliothek Carbon. Sie bietet eine praktische fluent-Schnittstelle für die Arbeit mit Daten.
Installation:
go get github.com/golang-module/carbon/v2Anwendungsbeispiele:
package main
import ( "fmt" "github.com/golang-module/carbon/v2")
func main() { // Aktuelles Datum now := carbon.Now() fmt.Println("Jetzt:", now.ToDateTimeString())
// Datum erstellen date := carbon.CreateFromDate(2024, 3, 15) fmt.Println("Datum:", date.ToDateString())
// Differenz zwischen Daten start := carbon.Parse("2024-01-01") end := carbon.Parse("2024-03-15") diff := start.DiffInDays(end) fmt.Printf("Tage dazwischen: %d", diff)
// Menschenlesbare Formate fmt.Println("Gestern:", carbon.Yesterday().ToDateString()) fmt.Println("Morgen:", carbon.Tomorrow().ToDateString())
// Prüfungen fmt.Println("Ist jetzt Wochenende?", now.IsWeekend()) fmt.Println("Ist jetzt Morgen?", now.IsMorning())}Vorteile: einfache API, Unterstützung für chinesische Schriftzeichen, Lokalisierung, Methoden für die Arbeit mit Anfang/Ende von Tag, Woche, Monat.
3. Die Bibliothek now (minimalistisches Werkzeug)
Die Bibliothek now vom Autor von GORM ist ein leichtes Werkzeug zur Berechnung von Anfang und Ende von Zeiträumen.
Install
Auch in der Bibliothek
CLI-Frameworks für Go (Golang): vollständiger Überblick und Vergleich
Objektserialisierung in Swift: Codable, NSCoding und JSONEncoder
Arbeit mit Apache Kafka in Node.js: Bibliothek KafkaJS