Próbuję przeanalizować sygnaturę czasową systemu Unix, ale pojawia się błąd poza zakresem. To nie ma dla mnie sensu, ponieważ układ jest poprawny (jak w dokumentacji 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
Hej
źródło
źródło
strconv.ParseUint
zamiast tego, ponieważ liczby ujemne i tak nie mają sensu?func Unix(sec int64, nsec int64) Time
odbieraint64
wartości. Również liczby ujemne dla sekund mają sens - opisują daty sprzed 1970 roku! :) Jeśli chodzi onsec
wartości ujemne, oznacza to, że z sekund można usunąć tyle nanosekund.Możesz bezpośrednio użyć funkcji time.Unix czasu, która konwertuje uniksowy znacznik czasu na UTC
Wynik
Sprawdź w Go Playground: https://play.golang.org/p/5FtRdnkxAd
źródło
Udostępniam kilka funkcji, które stworzyłem dla dat:
Zwróć uwagę, że chciałem uzyskać czas dla określonej lokalizacji (nie tylko czas UTC). Jeśli chcesz mieć czas UTC, po prostu usuń zmienną loc i wywołanie funkcji .In (loc).
źródło
.In(loc)
dało mi trochę czasu-0400 EDT
. Zastąpienie go.In(time.UTC)
dało mi czas w UTC.Zgodnie z dokumentacją go , Unix zwraca czas lokalny.
Oznacza to, że dane wyjściowe zależą od maszyny, na której działa twój kod, która najczęściej jest tym, czego potrzebujesz, ale czasami możesz chcieć mieć wartość w UTC.
Aby to zrobić, dostosowałem fragment kodu tak, aby zwracał czas w UTC:
To drukuje na moim komputerze (w CEST)
źródło
Robię dużo rejestrowania, gdzie znaczniki czasu to float64 i używam tej funkcji, aby uzyskać znaczniki czasu jako ciąg:
źródło
Po prostu wykorzystaj czas
przykład:
Przykład roboczy na play.golang.org .
źródło