Time.Parse in Go mit `time.Parse` beherrschen
Emily Parker
Product Engineer · Leapcell

Key Takeaways
- Go's
time.Parse
verwendet ein Referenzzeitformat, um Datumszeichenfolgen zu interpretieren. - Nicht übereinstimmende Layouts und Zeitzonen können zu Parsing-Fehlern führen.
- Die richtige Formatierung gewährleistet eine genaue Zeitmanipulation in Anwendungen.
In der Go-Programmierung ist das Parsen von Zeichenfolgen in Zeitobjekte eine häufige Aufgabe, die oft erforderlich ist, wenn Daten und Zeiten in verschiedenen Formaten verarbeitet werden. Das time
-Paket bietet die Funktion Parse
an, um diese Konvertierung zu erleichtern. Es ist wichtig zu verstehen, wie time.Parse
effektiv eingesetzt wird, um eine genaue Zeitmanipulation in Go-Anwendungen zu gewährleisten.
time.Parse
verstehen
Die Funktion time.Parse
in Go interpretiert eine gegebene Zeichenfolge gemäß einem angegebenen Layout und gibt den entsprechenden time.Time
-Wert zurück. Die Funktionssignatur lautet:
func Parse(layout, value string) (Time, error)
layout
: Eine Zeichenfolge, die das Format der Eingabezeitzeichenfolge definiert.value
: Die eigentliche Zeitzeichenfolge, die geparst werden soll.
Das Layout definieren
Go verwendet einen einzigartigen Ansatz zur Definition des Layouts: Eine Referenzzeit wird in dem spezifischen Muster formatiert, dem Ihre Eingabezeichenfolge folgen soll. Die Referenzzeit ist:
Mon Jan 2 15:04:05 MST 2006
Jede Komponente dieser Referenzzeit entspricht einem bestimmten Zeit- oder Datumsbestandteil:
2006
: Jahr01
: Monat02
: Tag15
: Stunde (24-Stunden-Format)04
: Minute05
: SekundeMST
: Zeitzone
Wenn Sie beispielsweise ein Datum im Format "Tag/Monat/Jahr Stunde:Minute
layout := "02/01/2006 15:04:05"
Eine Zeitzeichenfolge parsen
Um die Zeichenfolge "07/25/2019 13:45:00" mithilfe des oben definierten Layouts zu parsen:
package main import ( "fmt" "time" ) func main() { layout := "02/01/2006 15:04:05" timeStr := "25/07/2019 13:45:00" t, err := time.Parse(layout, timeStr) if err != nil { fmt.Println("Fehler beim Parsen der Zeit:", err) return } fmt.Println("Geparste Zeit:", t) }
Dies gibt Folgendes aus:
Geparste Zeit: 2019-07-25 13:45:00 +0000 UTC
Verschiedene Zeitformate verarbeiten
Wenn Ihre Zeitzeichenfolge verschiedene Komponenten enthält, passen Sie das Layout entsprechend an. Um beispielsweise eine Zeit im Format "hh
layout := "03:04 PM" timeStr := "11:22 PM" t, err := time.Parse(layout, timeStr)
In diesem Fall verwendet das Layout 03
für die Stunde, 04
für die Minute und PM
, um den Tagesabschnitt anzugeben. Dieser Ansatz ist besonders nützlich, wenn mit Zeitdauern gearbeitet wird. Um beispielsweise die Anzahl der Sekunden seit Mitternacht zu berechnen:
package main import ( "fmt" "time" ) func main() { layout := "03:04 PM" ref, _ := time.Parse(layout, "12:00 AM") t, err := time.Parse(layout, "11:22 PM") if err != nil { fmt.Println("Fehler beim Parsen der Zeit:", err) return } fmt.Println("Sekunden seit Mitternacht:", t.Sub(ref).Seconds()) }
Dies gibt Folgendes aus:
Sekunden seit Mitternacht: 84120
Diese Berechnung bestimmt die Gesamtanzahl der Sekunden von Mitternacht bis 23:22 Uhr.
Häufige Fehlerquellen
- Nicht übereinstimmendes Layout und Wert: Stellen Sie sicher, dass die Layout-Zeichenfolge genau mit dem Format der Zeitzeichenfolge übereinstimmt. Eine Nichtübereinstimmung führt zu einem Parsing-Fehler.
- Zeitzonen: Wenn die Zeitzeichenfolge eine Zeitzone enthält, muss das Layout diese mithilfe der Formate
MST
oder-0700
berücksichtigen. - Führende Nullen: Das Layout erfordert führende Nullen für einstellige Monate, Tage, Stunden, Minuten und Sekunden. Beispielsweise sollte Januar als
01
und nicht als1
dargestellt werden.
Schlussfolgerung
Die Funktion time.Parse
ist ein leistungsstarkes Werkzeug in Go, um Zeichenfolgen in time.Time
-Objekte zu konvertieren. Durch die Definition des entsprechenden Layouts basierend auf der Referenzzeit können Sie verschiedene Datums- und Zeitformate genau parsen und so eine effektive Zeitmanipulation in Ihren Anwendungen ermöglichen.
FAQs
Go verwendet eine feste Referenzzeit (Mon Jan 2 15:04:05 MST 2006
), um Datumsformate zu interpretieren.
Fügen Sie die Zeitzone in das Layout ein, z. B. "02/01/2006 15:04:05 -0700"
.
time.Parse
gibt einen Fehler zurück, da es strikt dem angegebenen Format folgt.
Wir sind Leapcell, Ihre erste Wahl für das Hosten von Go-Projekten.
Leapcell ist die Serverless-Plattform der nächsten Generation für Webhosting, asynchrone Aufgaben und Redis:
Multi-Sprachen Unterstützung
- Entwickeln Sie mit Node.js, Python, Go oder Rust.
Stellen Sie unbegrenzt Projekte kostenfrei bereit
- zahlen Sie nur für die Nutzung – keine Anfragen, keine Gebühren.
Unschlagbare Kosteneffizienz
- Pay-as-you-go ohne Leerlaufgebühren.
- Beispiel: 25 $ unterstützen 6,94 Millionen Anfragen bei einer durchschnittlichen Antwortzeit von 60 ms.
Optimierte Entwicklererfahrung
- Intuitive Benutzeroberfläche für mühelose Einrichtung.
- Vollautomatisierte CI/CD-Pipelines und GitOps-Integration.
- Echtzeitmetriken und -protokollierung für verwertbare Erkenntnisse.
Mühelose Skalierbarkeit und hohe Leistung
- Automatische Skalierung zur einfachen Bewältigung hoher Parallelität.
- Null Betriebsaufwand – konzentrieren Sie sich einfach auf den Aufbau.
Erfahren Sie mehr in der Dokumentation!
Folgen Sie uns auf X: @LeapcellHQ