Il parsing delle date in Go può sembrare poco intuitivo all'inizio, soprattutto per chi proviene da altri linguaggi che utilizzano formati tipo YYYY-MM-DD
. In Go, la funzione time.Parse
utilizza un formato di riferimento specifico: Mon Jan 2 15:04:05 MST 2006. Questo layout rappresenta l’esempio da cui Go deduce il formato della stringa da interpretare.
Il Formato di Riferimento
Invece di usare simboli come yyyy
, MM
o dd
, Go si basa su valori fissi e le loro posizioni. Ecco il valore di riferimento completo:
const layout = "Mon Jan 2 15:04:05 MST 2006"
Ogni parte rappresenta un componente specifico della data:
- Mon: giorno della settimana (es. "Mon")
- Jan: mese (es. "Jan")
- 2: giorno (es. "2")
- 15:04:05: ora nel formato 24h
- MST: fuso orario
- 2006: anno
Esempio di Parsing
Vediamo un esempio di come effettuare il parsing di una stringa nel formato YYYY-MM-DD
:
package main
import (
"fmt"
"time"
)
func main() {
layout := "2006-01-02"
input := "2025-07-23"
t, err := time.Parse(layout, input)
if err != nil {
fmt.Println("Errore nel parsing:", err)
return
}
fmt.Println("Data parsata:", t)
}
Parsing con Ora
Per includere anche l’ora, si può usare un layout più esteso:
layout := "2006-01-02 15:04:05"
input := "2025-07-23 14:30:00"
t, err := time.Parse(layout, input)
Fusi Orari
Per interpretare date con fuso orario, è necessario includerlo nel layout:
layout := "2006-01-02 15:04:05 -0700"
input := "2025-07-23 14:30:00 +0200"
t, err := time.Parse(layout, input)
Parsing con time.ParseInLocation
Se si conosce il fuso orario desiderato, è possibile usare time.ParseInLocation
:
loc, _ := time.LoadLocation("Europe/Rome")
t, err := time.ParseInLocation("2006-01-02 15:04:05", "2025-07-23 14:30:00", loc)
Conclusioni
Il parsing delle date in Go richiede familiarità con il layout di riferimento. Una volta compreso il principio base, è possibile analizzare correttamente quasi ogni formato. La documentazione del pacchetto time
è una risorsa essenziale per ulteriori approfondimenti.