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.
package main
import "time"
func main() {
ts := time.Now().Unix()
}time.Now().UnixMilli()time.Now().UnixNano()import "time"
t := time.Unix(1700000000, 0)
t.UTC() // ensure UTCimport "time"
t := time.Unix(1700000000, 0)
t.Format(time.RFC3339) // "2023-11-15T06:13:20Z"
t.Format("2006-01-02 15:04:05") // custom layoutimport "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.