Generare il timestamp attuale
Questi tre valori provengono dallo stesso istante:
now := time.Now()
fmt.Println(now.Unix()) // secondi
fmt.Println(now.UnixMilli()) // millisecondi
fmt.Println(now.UnixNano()) // nanosecondiInserisci questo frammento dentro main, con gli import fmt e time del programma seguente.
Convertire secondi o millisecondi
In Go 1.17 o successivo, usa time.Unix per i secondi e time.UnixMilli per i millisecondi. Questo programma completo produce lo stesso istante con entrambe le unità.
package main
import (
"fmt"
"time"
)
func main() {
seconds := int64(1711972800)
milliseconds := int64(1711972800000)
date := time.Unix(seconds, 0).UTC()
sameDate := time.UnixMilli(milliseconds).UTC()
fmt.Println(date.Format(time.RFC3339)) // 2024-04-01T12:00:00Z
fmt.Println(date.Equal(sameDate)) // true
fmt.Println(date.Unix()) // 1711972800
fmt.Println(date.UnixMilli()) // 1711972800000
}Per l'istante attuale: time.Now().Unix() oppure time.Now().UnixMilli(). Il fuso orario non cambia questi numeri.
Formattare con la data di riferimento di Go
Il layout usa i componenti del 2 gennaio 2006 alle 15:04:05: 2006 rappresenta l'anno, 01 il mese e 02 il giorno. Questo frammento riutilizza date dell'esempio precedente.
fmt.Println(date.Format("02/01/2006 15:04:05"))
// 01/04/2024 12:00:00Interpretare una data con il suo offset UTC
parsed, err := time.Parse(time.RFC3339, "2024-04-01T14:00:00+02:00")
if err != nil {
panic(err) // In un’API, restituisci un errore di validazione.
}
fmt.Println(parsed.Unix()) // 1711972800Un offset di +02:00 non descrive i cambi stagionali dell'ora a Parigi. Per visualizzare un fuso geografico, carica la località e gestisci eventuali errori.
paris, err := time.LoadLocation("Europe/Paris")
if err != nil {
panic(err)
}
fmt.Println(parsed.In(paris).Format(time.RFC3339))
// 2024-04-01T14:00:00+02:00Date negative, precisione e durate
time.Unix(-1, 0).UTC() rappresenta il 31 dicembre 1969 alle 23:59:59 UTC. Evita i numeri in virgola mobile nel trasporto dei nanosecondi. UnixNano() non copre ogni data rappresentabile da time.Time: il suo intervallo è limitato da un intero con segno a 64 bit.
Per cronometrare un'operazione, conserva start := time.Now() e poi usa time.Since(start), invece di sottrarre due timestamp serializzati.
Provare un valore e approfondire
Incolla i risultati nel convertitore Unix, controlla unità e precisione oppure confronta con la conversione in Rust.
Riferimenti ufficiali
Go — pacchetto time e orologi monotoni · Format e la data di riferimento · Limiti di UnixNano
Versione italiana pubblicata il 26 settembre 2026.