Go Snippets

Go-Unix-Timestamp-Snippets

Go-Beispiele für Unix-Sekunden, -Millisekunden und -Nanosekunden, das Umwandeln von Timestamps in time.Time und das Formatieren mit RFC3339 oder eigenen Layouts.

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

Grundlagen zu Go-Zeitstempeln

Gos time-Paket bietet direkte Helfer für Unix-Sekunden, -Millisekunden und -Nanosekunden. Verwende time.Now().Unix() für Sekunden und time.Now().UnixMilli() für JavaScript-kompatible Millisekunden.

time.Time-Werte formatieren

Verwende time.Unix(seconds, 0), um aus Unix-Sekunden ein time.Time zu erstellen, und rufe dann UTC() auf, wenn du deterministische Ausgabe möchtest. RFC3339 ist meist das beste String-Format für API-Antworten.

Hinweise für den Produktiveinsatz von Go

Gos time.Time trägt eine Location, aber Unix-Zeitstempel stellen immer einen einzigen UTC-Zeitpunkt dar. Normalisiere Zeitstempel an API- und Datenbankgrenzen und formatiere dann mit einer expliziten Location, wenn ein Nutzer oder eine Geschäftsregel lokale Zeit benötigt. Das hält Vergleiche einfach und verhindert, dass lokale Servereinstellungen die Ausgabe verändern.

  • Verwende time.Now().Unix() für Unix-Sekunden in Logs, Queues und Datenbankfeldern
  • Verwende time.Now().UnixMilli() für JavaScript-kompatible Werte
  • Verwende time.Unix(seconds, 0).UTC() vor dem Formatieren deterministischer Strings
  • Verwende time.RFC3339 oder time.RFC3339Nano für API-Antworten

FAQ

Sollte ich time.Time oder Unix-Sekunden speichern?
Verwende time.Time innerhalb von Go, wenn du Kalenderoperationen brauchst. Speichere Unix-Sekunden oder einen Datenbank-Zeitstempeltyp, wenn der Wert indiziert, abgefragt oder mit anderen Systemen geteilt werden muss.
Welche Einheit erwartet time.Unix?
time.Unix erwartet Sekunden und Nanosekunden als separate Argumente. Wenn du Millisekunden erhältst, teile oder wandle den Wert um, bevor du time.Unix aufrufst.
Wie überprüfe ich die Go-Ausgabe?
Formatiere den Wert mit t.UTC().Format(time.RFC3339) und vergleiche ihn mit dem Zeitstempel, den die API, die Queue oder die Datenbankspalte erwartet, in die du schreibst.