Go Snippets

Extraits de timestamp Unix en Go

Exemples Go pour les secondes, millisecondes et nanosecondes Unix, la conversion de timestamps en time.Time et le formatage avec RFC3339 ou des layouts personnalisés.

Current Unix timestamp (seconds)
package main

import "time"

func main() {
    ts := time.Now().Unix()
}
Current Unix timestamp (milliseconds)
time.Now().UnixMilli()
Current Unix timestamp (nanoseconds)
time.Now().UnixNano()
time.Time from Unix timestamp
import "time"

t := time.Unix(1700000000, 0)
t.UTC()  // ensure UTC
Formatted string
import "time"

t := time.Unix(1700000000, 0)
t.Format(time.RFC3339)          // "2023-11-15T06:13:20Z"
t.Format("2006-01-02 15:04:05") // custom layout
Timestamp from time.Time
import "time"

t, _ := time.Parse(time.RFC3339, "2023-11-15T06:13:20Z")
t.Unix()

Bases des horodatages en Go

Le paquet time de Go propose des aides directes pour les secondes, millisecondes et nanosecondes Unix. Utilisez time.Now().Unix() pour les secondes et time.Now().UnixMilli() pour des millisecondes compatibles JavaScript.

Formater les valeurs time.Time

Utilisez time.Unix(seconds, 0) pour créer un time.Time à partir de secondes Unix, puis appelez UTC() quand vous voulez une sortie déterministe. RFC3339 est généralement le meilleur format de chaîne pour les réponses d'API.

Notes de production pour Go

Le time.Time de Go porte une localisation, mais les horodatages Unix représentent toujours un seul instant UTC. Normalisez les horodatages aux frontières d'API et de base de données, puis formatez avec une localisation explicite quand un utilisateur ou une règle métier a besoin de l'heure locale. Cela garde les comparaisons simples et empêche les réglages locaux du serveur de modifier la sortie.

  • Utilisez time.Now().Unix() pour des secondes Unix dans les journaux, files d'attente et champs de base de données
  • Utilisez time.Now().UnixMilli() pour des valeurs compatibles JavaScript
  • Utilisez time.Unix(seconds, 0).UTC() avant de formater des chaînes déterministes
  • Utilisez time.RFC3339 ou time.RFC3339Nano pour les réponses d'API

FAQ

Dois-je stocker time.Time ou des secondes Unix ?
Utilisez time.Time à l'intérieur de Go quand vous avez besoin d'opérations de calendrier. Stockez des secondes Unix ou un type d'horodatage de base de données quand la valeur doit être indexée, interrogée ou partagée avec d'autres systèmes.
Quelle unité time.Unix attend-il ?
time.Unix attend des secondes et des nanosecondes en arguments séparés. Si vous recevez des millisecondes, divisez ou convertissez la valeur avant d'appeler time.Unix.
Comment vérifier la sortie de Go ?
Formatez la valeur avec t.UTC().Format(time.RFC3339) et comparez-la à l'horodatage attendu par l'API, la file d'attente ou la colonne de base de données dans laquelle vous écrivez.