Ce face time.Time.Unix
Timpul Unix (timestamp) este numărul de secunde de la 1 ianuarie 1970, 00:00:00 UTC. Nu depinde de fusul orar, deci este ușor de salvat în baze de date sau de trimis între programe. t.Unix() dă secundele, iar t.UnixMilli() dă milisecundele (formatul folosit de JavaScript cu Date.now()). Există și UnixMicro și UnixNano.
Drumul invers îl fac funcțiile pachetului: time.Unix(sec, nsec) (secunde plus nanosecunde, de obicei 0), time.UnixMilli(ms) și time.UnixMicro(µs), pentru timestamp-uri în milisecunde (JavaScript, multe API-uri) sau microsecunde (unele baze de date și jurnale). Rezultatul lor este în fusul orar local; adaugă .UTC() pentru o afișare stabilă.
Ce returnează
Un int64: secunde (Unix) sau milisecunde (UnixMilli).
Exemple
Exemplul 1: Moment în secunde și milisecunde
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, time.October, 19, 12, 0, 0, 0, time.UTC)
fmt.Println("Unix: ", t.Unix())
fmt.Println("UnixMilli:", t.UnixMilli())
// Același moment scris în alt fus orar are același timestamp
ro := time.FixedZone("EEST", 3*3600)
fmt.Println("În EEST: ", t.In(ro).Unix())
fmt.Println("Epoca Unix:", time.Unix(0, 0).UTC())
}
Rezultat
Unix: 1792411200
UnixMilli: 1792411200000
În EEST: 1792411200
Epoca Unix: 1970-01-01 00:00:00 +0000 UTC
Exemplul 2: Din timestamp înapoi în dată
Un API trimite momentul în milisecunde (ca JavaScript); îl transformăm în time.Time.
package main
import (
"fmt"
"time"
)
func main() {
var dinAPI int64 = 1792411200000 // milisecunde
t := time.UnixMilli(dinAPI).UTC()
fmt.Println("Comanda plasată:", t.Format(time.DateTime), "UTC")
expira := time.Unix(1792497600, 0).UTC()
fmt.Println("Tokenul expiră: ", expira.Format(time.DateTime), "UTC")
dinJurnal := time.UnixMicro(1792411200123456).UTC()
fmt.Println("Intrare jurnal: ", dinJurnal.Format("15:04:05.000000"))
fmt.Println("Valabil: ", expira.Sub(t))
}
Rezultat
Comanda plasată: 2026-10-19 12:00:00 UTC
Tokenul expiră: 2026-10-20 12:00:00 UTC
Intrare jurnal: 12:00:00.123456
Valabil: 24h0m0s
Greșeli frecvente
- Dai milisecunde lui
time.Unix(sau secunde luitime.UnixMilli). Data iese în anul 58000 sau în 1970; verifică unitatea primită. - Afișezi rezultatul lui
time.Unixși te miri că ora diferă de la un server la altul: este în fusul local. Folosește.UTC()sau.In(loc).
Comenzi înrudite
time.Time: Tipul care ține un moment în timp: dată, oră, nanosecunde și fusul orar. Se creează cu time.Date sau time.Now.time.Time.In: Afișează același moment în alt fus orar: In(loc) pentru o zonă anume, UTC() pentru UTC, Local() pentru zona calculatorului.time.Time.Format: Transformă un moment în text după un model scris cu data de referință 2 ianuarie 2006, 15:04:05.