Estoy tratando de analizar una marca de tiempo de Unix pero obtengo un error fuera de rango. Eso realmente no tiene sentido para mí, porque el diseño es correcto (como en los documentos de Go):
package main
import "fmt"
import "time"
func main() {
tm, err := time.Parse("1136239445", "1405544146")
if err != nil{
panic(err)
}
fmt.Println(tm)
}
go
time
unix-timestamp
Oye
fuente
fuente
strconv.ParseUint
en su lugar, ya que los números negativos no tienen sentido de todos modos?func Unix(sec int64, nsec int64) Time
recibeint64
valores. Además, los números negativos por segundos tienen mucho sentido: ¡describen fechas anteriores a 1970! :) En cuanto ansec
los valores negativos, significa eliminar esa cantidad de nanosegundos de los segundos.Puede usar directamente time.Unix función de tiempo que convierte el sello de tiempo de Unix a UTC
Salida
Regístrese en Go Playground: https://play.golang.org/p/5FtRdnkxAd
fuente
Compartiendo algunas funciones que creé para las fechas:
Tenga en cuenta que quería obtener la hora de una ubicación en particular (no solo la hora UTC). Si desea la hora UTC, simplemente elimine la variable loc y la función .In (loc) llamada.
fuente
.In(loc)
me dio tiempo-0400 EDT
. Reemplazarlo con.In(time.UTC)
me dio tiempo en UTC.Según la documentación de go , Unix devuelve una hora local.
Esto significa que la salida dependerá de la máquina en la que se ejecute su código, que, en la mayoría de los casos, es lo que necesita, pero a veces, es posible que desee tener el valor en UTC.
Para hacerlo, adapté el fragmento para que devuelva una hora en UTC:
Esto se imprime en mi máquina (en CEST)
fuente
Hago muchos registros donde las marcas de tiempo son float64 y uso esta función para obtener las marcas de tiempo como una cadena:
fuente
Solo usa el tiempo.
ejemplo:
Ejemplo de trabajo en play.golang.org .
fuente