Saya mencoba mengurai stempel waktu Unix tetapi saya mendapatkan kesalahan di luar jangkauan. Itu tidak masuk akal bagi saya, karena tata letaknya benar (seperti dalam dokumen 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
Hei
sumber
sumber
strconv.ParseUint
sebagai gantinya karena angka negatif tidak masuk akal?func Unix(sec int64, nsec int64) Time
menerimaint64
nilai. Selain itu, angka negatif untuk detik sangat masuk akal - angka tersebut menjelaskan tanggal sebelum tahun 1970! :) Adapunnsec
, nilai negatif berarti menghilangkan banyak nanodetik dari detik.Anda dapat langsung menggunakan fungsi time.Unix dari waktu yang mengubah stempel waktu unix menjadi UTC
Keluaran
Periksa di Go Playground: https://play.golang.org/p/5FtRdnkxAd
sumber
Berbagi beberapa fungsi yang saya buat untuk tanggal:
Harap dicatat bahwa saya ingin mendapatkan waktu untuk lokasi tertentu (bukan hanya waktu UTC). Jika Anda menginginkan waktu UTC, hapus saja variabel loc dan pemanggilan fungsi .In (loc).
sumber
.In(loc)
memberi saya waktu-0400 EDT
. Menggantinya dengan.In(time.UTC)
memberi saya waktu di UTC.Menurut dokumentasi go , Unix mengembalikan waktu lokal.
Artinya, keluarannya akan bergantung pada mesin tempat kode Anda berjalan, yang paling sering Anda butuhkan, tetapi terkadang, Anda mungkin ingin memiliki nilai dalam UTC.
Untuk melakukannya, saya menyesuaikan cuplikan agar mengembalikan waktu dalam UTC:
Ini mencetak di mesin saya (di CEST)
sumber
Saya melakukan banyak pencatatan di mana cap waktu adalah float64 dan menggunakan fungsi ini untuk mendapatkan cap waktu sebagai string:
sumber
Gunakan saja time.Parse
contoh:
Contoh kerja di play.golang.org .
sumber