Я пытаюсь разобрать временную метку Unix, но выхожу за пределы допустимого диапазона. Для меня это не имеет смысла, потому что макет правильный (как в документации 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
Привет
источник
источник
strconv.ParseUint
вместо этого, поскольку отрицательные числа в любом случае не имеют смысла?func Unix(sec int64, nsec int64) Time
получаетint64
значения. Кроме того, отрицательные числа для секунд имеют смысл - они описывают даты до 1970 года! :) Что касаетсяnsec
отрицательных значений, значит убрать это количество наносекунд из секунд.Вы можете напрямую использовать функцию времени time.Unix, которая преобразует метку времени unix в UTC.
Вывод
Зацените Go Playground: https://play.golang.org/p/5FtRdnkxAd
источник
Совместное использование нескольких функций, которые я создал для свиданий:
Обратите внимание, что я хотел узнать время для определенного места (а не только время UTC). Если вам нужно время в формате UTC, просто удалите переменную loc и вызов функции .In (loc).
источник
.In(loc)
дало мне время-0400 EDT
. Замена на.In(time.UTC)
дала мне время в UTC.Согласно документации go , Unix возвращает местное время.
Это означает, что вывод будет зависеть от машины, на которой работает ваш код, что чаще всего является тем, что вам нужно, но иногда вам может потребоваться значение в формате UTC.
Для этого я адаптировал фрагмент, чтобы он возвращал время в формате UTC:
Это напечатано на моей машине (в CEST)
источник
Я много веду журналы, где метки времени - float64, и использую эту функцию для получения меток времени в виде строки:
источник
Просто используйте время.
пример:
Рабочий пример на play.golang.org .
источник