timestampinfo.fr
Outils & documentation

LA DOCUMENTATION DU TEMPS

Timestamp en Go : Unix, UnixMilli et formatage

Convertir un timestamp en time.Time, formater une date et gérer UTC avec le package time de Go.

Générer le timestamp actuel

Ces trois valeurs proviennent du même instant :

now := time.Now()
fmt.Println(now.Unix())      // secondes
fmt.Println(now.UnixMilli()) // millisecondes
fmt.Println(now.UnixNano())  // nanosecondes

Ce fragment se place dans main, avec les imports fmt et time du programme ci-dessous.

Convertir des secondes ou des millisecondes

Avec Go 1.17 ou ultérieur, utilisez time.Unix pour des secondes et time.UnixMilli pour des millisecondes. Ce programme complet produit le même instant avec les deux unités.

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
}

Pour l’instant courant : time.Now().Unix() ou time.Now().UnixMilli(). Le fuseau ne change pas ces nombres.

Formater avec la date de référence Go

Le modèle utilise les éléments du 2 janvier 2006 à 15:04:05 : 2006 représente l’année, 01 le mois et 02 le jour. Ce fragment réutilise date ci-dessus.

fmt.Println(date.Format("02/01/2006 15:04:05"))
// 01/04/2024 12:00:00

Lire une date avec son décalage UTC

parsed, err := time.Parse(time.RFC3339, "2024-04-01T14:00:00+02:00")
if err != nil {
    panic(err) // Dans une API, renvoyer une erreur de validation.
}
fmt.Println(parsed.Unix()) // 1711972800

Un décalage +02:00 ne décrit pas les changements saisonniers de Paris. Pour afficher un fuseau géographique, chargez sa localisation et traitez l’erreur éventuelle.

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

Dates négatives, précision et durées

time.Unix(-1, 0).UTC() représente le 31 décembre 1969 à 23:59:59 UTC. Évitez les nombres flottants pour transporter des nanosecondes. UnixNano() ne couvre pas toutes les dates représentables par time.Time : sa plage est limitée par un entier signé de 64 bits.

Pour chronométrer une opération, conservez start := time.Now() puis utilisez time.Since(start), plutôt que de soustraire deux timestamps sérialisés.

Tester une valeur et poursuivre

Collez vos résultats dans le convertisseur Unix, vérifiez les unités et la précision ou comparez avec la conversion en Rust.

Références officielles

Go — package time et horloge monotone · Format et date de référence · Limites de UnixNano

Publié le 25 septembre 2026.