timestampinfo.fr
Herramientas y documentación

DOCUMENTACIÓN DEL TIEMPO

Timestamps en Go: Unix, UnixMilli y formato

Convierte un timestamp a time.Time, formatea una fecha y trabaja en UTC con el paquete time de Go.

Generar el timestamp actual

Estos tres valores corresponden al mismo instante:

now := time.Now()
fmt.Println(now.Unix())      // segundos
fmt.Println(now.UnixMilli()) // milisegundos
fmt.Println(now.UnixNano())  // nanosegundos

Coloca este fragmento dentro de main, con las importaciones fmt y time del programa siguiente.

Convertir segundos o milisegundos

En Go 1.17 o posterior, utiliza time.Unix para segundos y time.UnixMilli para milisegundos. Este programa completo produce el mismo instante con ambas unidades.

package main

import (
    "fmt"
    "time"
)

func main() {
    seconds := int64(1711972800)
    milliseconds := int64(1711972800000)
    date := time.Unix(seconds, 0).UTC()
    sameDate := time.UnixMilli(milliseconds).UTC()

    fmt.Println(date.Format(time.RFC3339)) // 2024-04-01T12:00:00Z
    fmt.Println(date.Equal(sameDate))      // true
    fmt.Println(date.Unix())              // 1711972800
    fmt.Println(date.UnixMilli())         // 1711972800000
}

Para el instante actual: time.Now().Unix() o time.Now().UnixMilli(). La zona horaria no cambia estos números.

Formatear con la fecha de referencia de Go

El patrón utiliza los componentes del 2 de enero de 2006 a las 15:04:05: 2006 representa el año, 01 el mes y 02 el día. Este fragmento reutiliza date del ejemplo anterior.

fmt.Println(date.Format("02/01/2006 15:04:05"))
// 01/04/2024 12:00:00

Interpretar una fecha con su desfase UTC

parsed, err := time.Parse(time.RFC3339, "2024-04-01T14:00:00+02:00")
if err != nil {
    panic(err) // En una API, devuelve un error de validación.
}
fmt.Println(parsed.Unix()) // 1711972800

Un desfase de +02:00 no describe los cambios estacionales de hora de París. Para mostrar una zona horaria geográfica, carga su ubicación y gestiona los posibles errores.

paris, err := time.LoadLocation("Europe/Paris")
if err != nil {
    panic(err)
}
fmt.Println(parsed.In(paris).Format(time.RFC3339))
// 2024-04-01T14:00:00+02:00

Fechas negativas, precisión y duraciones

time.Unix(-1, 0).UTC() representa el 31 de diciembre de 1969 a las 23:59:59 UTC. Evita los números de coma flotante al transportar nanosegundos. UnixNano() no cubre todas las fechas representables por time.Time: su rango está limitado por un entero de 64 bits con signo.

Para cronometrar una operación, conserva start := time.Now() y después utiliza time.Since(start), en lugar de restar dos timestamps serializados.

Probar un valor y profundizar

Pega tus resultados en el Conversor Unix, comprueba las unidades y la precisión o compara con la conversión en Rust.

Referencias oficiales

Go — paquete time y relojes monótonos · Format y la fecha de referencia · Límites de UnixNano

Versión en español publicada el 26 de septiembre de 2026.