Frammenti di timestamp Unix in Go
Esempi Go per secondi, millisecondi e nanosecondi Unix, conversione di timestamp in time.Time e formattazione con RFC3339 o layout personalizzati.
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()Basi dei timestamp in Go
Il pacchetto time di Go ha helper diretti per secondi, millisecondi e nanosecondi Unix. Usa time.Now().Unix() per i secondi e time.Now().UnixMilli() per millisecondi compatibili con JavaScript.
Formattare i valori time.Time
Usa time.Unix(seconds, 0) per creare un time.Time dai secondi Unix, poi chiama UTC() quando vuoi un output deterministico. RFC3339 è di solito il miglior formato stringa per le risposte API.
Note di produzione per Go
Il time.Time di Go porta con sé una location, ma i timestamp Unix rappresentano sempre un singolo istante UTC. Normalizza i timestamp ai confini di API e database, poi formatta con una location esplicita quando un utente o una regola di business richiede l'ora locale. Così i confronti restano semplici e le impostazioni locali del server non alterano l'output.
- Usa time.Now().Unix() per secondi Unix in log, code e campi di database
- Usa time.Now().UnixMilli() per valori compatibili con JavaScript
- Usa time.Unix(seconds, 0).UTC() prima di formattare stringhe deterministiche
- Usa time.RFC3339 o time.RFC3339Nano per le risposte API
FAQ
- Dovrei memorizzare time.Time o secondi Unix?
- Usa time.Time all'interno di Go quando hai bisogno di operazioni di calendario. Memorizza secondi Unix o un tipo timestamp di database quando il valore deve essere indicizzato, interrogato o condiviso con altri sistemi.
- Quale unità si aspetta time.Unix?
- time.Unix si aspetta secondi e nanosecondi come argomenti separati. Se ricevi millisecondi, dividi o converti il valore prima di chiamare time.Unix.
- Come verifico l'output di Go?
- Formatta il valore con t.UTC().Format(time.RFC3339) e confrontalo con il timestamp atteso dall'API, dalla coda o dalla colonna di database in cui stai scrivendo.