Go:
Een datum ontleden uit een string
Hoe te:
Go biedt robuuste ondersteuning voor het parsen van datums en tijden door middel van het time
-pakket. De sleutel is het begrijpen van Go’s referentiedatumformaat: Mon Jan 2 15:04:05 MST 2006
, dat je gebruikt om Go te vertellen hoe de binnenkomende string te interpreteren. Hier is een snel voorbeeld om je op weg te helpen:
package main
import (
"fmt"
"time"
)
func main() {
// Voorbeeld datum string
dateStr := "2023-04-12 14:45:00"
// Definieer de lay-out/het formaat van de invoerdatumstring
// Deze lay-out vertelt Go om een jaar te verwachten, gevolgd door een maand,
// dan een dag, uur, minuut en ten slotte seconde
layout := "2006-01-02 15:04:05"
// Parse de datumstring volgens de lay-out
parsedDate, err := time.Parse(layout, dateStr)
if err != nil {
fmt.Println("Fout bij het parsen van de datum:", err)
return
}
// Toon de geparseerde datum
fmt.Println("Geparste Datum:", parsedDate)
}
Wanneer je deze code uitvoert, krijg je:
Geparste Datum: 2023-04-12 14:45:00 +0000 UTC
Let op hoe de layout
-string de waarden van de referentiedatum gebruikt om het formaat van de invoerstring te specificeren. Pas de layout
aan om overeen te komen met het formaat van je invoerdatums.
Diepgaande Duik
Het ontwerp van Go’s datum- en tijdsparsing is uniek, gebruik makend van een specifieke referentiedatum (Mon Jan 2 15:04:05 MST 2006
). Deze benadering, in plaats van meer conventionele formaatspecifiers te gebruiken (zoals YYYY
voor jaar), is gekozen voor leesbaarheid en gebruiksgemak, waarbij een meer op voorbeelden gebaseerd formaat wordt benut.
Hoewel dit aanvankelijk ongebruikelijk kan lijken voor programmeurs die gewend zijn aan andere talen, vinden velen het na een korte aanpassingsperiode intuïtiever. Voor applicaties die complexere datummanipulatie vereisen of formaten die niet direct door Go’s time
-pakket worden ondersteund, kunnen externe bibliotheken zoals github.com/jinzhu/now
extra functionaliteit bieden. Echter, voor de meerderheid van de standaardtoepassingen zijn de ingebouwde mogelijkheden van Go robuust, performant en idiomatic, belichamend de Go-filosofie van eenvoud en duidelijkheid.