Estou tentando analisar um carimbo de data / hora Unix e mas recebo um erro fora do intervalo. Isso realmente não faz sentido para mim, porque o layout está correto (como nos documentos do Go):
package main
import "fmt"
import "time"
func main() {
tm, err := time.Parse("1136239445", "1405544146")
if err != nil{
panic(err)
}
fmt.Println(tm)
}
strconv.ParseUint
pois os números negativos não fazem sentido, afinal?func Unix(sec int64, nsec int64) Time
recebeint64
valores. Além disso, números negativos por segundo fazem todo o sentido - eles descrevem datas anteriores a 1970! :) Quanto ansec
valores negativos, significa remover tantos nanossegundos dos segundos.Você pode usar diretamente a função time.Unix de hora que converte o carimbo de hora unix em UTC
Resultado
Check-in Go Playground: https://play.golang.org/p/5FtRdnkxAd
fonte
Compartilhando algumas funções que eu criei para datas:
Observe que eu queria obter tempo para um local específico (não apenas o horário UTC). Se você quiser a hora UTC, basta remover a variável loc e a chamada de função .In (loc).
fonte
.In(loc)
me deu tempo-0400 EDT
. Substituí-lo por.In(time.UTC)
deu-me tempo no UTC.De acordo com a documentação do Go , o Unix retorna um horário local.
Isso significa que a saída dependerá da máquina em que seu código é executado, o que, na maioria das vezes, é o que você precisa, mas às vezes você pode querer ter o valor em UTC.
Para fazer isso, adaptei o snippet para retornar um horário no UTC:
Isso imprime na minha máquina (em CEST)
fonte
Faço muitos registros em que os carimbos de data / hora são float64 e uso essa função para obter os carimbos de data / hora como string:
fonte
Basta usar o tempo.
exemplo:
Exemplo de trabalho em play.golang.org .
fonte