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()) // nanosecondesCe 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:00Lire 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()) // 1711972800Un 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:00Dates 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.