Parsing delle date in Go

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.

Torna su