Saltar al contenido

Go/golang time.Now().UnixNano() convertir a milisegundos?

Investigamos por diferentes espacios para mostrarte la respuesta a tu problema, en caso de preguntas puedes dejarnos la inquietud y contestamos con mucho gusto, porque estamos para servirte.

Solo divídelo:

func makeTimestamp() int64 
    return time.Now().UnixNano() / int64(time.Millisecond)

Aquí hay un ejemplo que puede compilar y ejecutar para ver el resultado

package main

import (
    "time"
    "fmt"
)

func main() 
    a := makeTimestamp()

    fmt.Printf("%d n", a)


func makeTimestamp() int64 
    return time.Now().UnixNano() / int64(time.Millisecond)

Como señala @Jono en la respuesta de @OneOfOne, la respuesta correcta debe tener en cuenta la duración de un nanosegundo. P.ej:

func makeTimestamp() int64 
    return time.Now().UnixNano() / (int64(time.Millisecond)/int64(time.Nanosecond))

La respuesta de OneOfOne funciona porque time.Nanosecond pasa a ser 1, y dividir por 1 no tiene efecto. No sé lo suficiente sobre go para saber qué probabilidades hay de que esto cambie en el futuro, pero para la respuesta estrictamente correcta, usaría esta función, no la respuesta de OneOfOne. Dudo que haya alguna desventaja de rendimiento ya que el compilador debería poder optimizar esto perfectamente bien.

Ver https://en.wikipedia.org/wiki/Dimensional_analysis

Otra forma de ver esto es que ambos time.Now().UnixNano() y time.Millisecond utilice las mismas unidades (nanosegundos). Mientras eso sea truela respuesta de OneOfOne debería funcionar perfectamente bien.

Mantenlo simple.

func NowAsUnixMilli() int64 
    return time.Now().UnixNano() / 1e6

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *