timestampinfo.fr
Strumenti e documentazione

DOCUMENTAZIONE SUL TEMPO

Timestamp in Go: Unix, UnixMilli e formattazione

Convertire un timestamp in time.Time, formattare una data e gestire l'UTC con il pacchetto time di Go.

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())  // nanosecondi

Inserisci 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:00

Interpretare 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()) // 1711972800

Un 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:00

Date 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.