Go Snippets

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.

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()

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.