Rumah > Artikel > pembangunan bahagian belakang > Mengapakah fungsi Go `time.Parse` saya mengembalikan nilai masa yang tidak dijangka?
Memahami masa.Menghuraikan Gelagat dalam Go
Apabila cuba menukar rentetan kepada masa.Nilai masa dalam Go menggunakan masa.Kaedah Parse, menetapkan rentetan format yang betul adalah penting untuk mendapatkan hasil yang diharapkan.
Pertimbangkan kod berikut coretan:
package main import ( "fmt" "time" ) func main() { const longForm = "2013-05-13T18:41:34.848Z" //even this is not working //const longForm = "2013-05-13 18:41:34.848 -0700 PDT" t, _ := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700 PDT") fmt.Println(t) }
Kod cuba menghuraikan rentetan dalam format "2013-05-13 18:41:34.848 -0700 PDT" menggunakan rentetan format longForm. Walau bagaimanapun, output adalah tidak dijangka: "0001-01-01 00:00:00 0000 UTC".
Untuk memahami tingkah laku ini, adalah penting untuk ambil perhatian bahawa masa rujukan lalai untuk masa itu. Kaedah parse ialah " Isn Jan 2 15:04:05 MST 2006", yang mewakili masa Unix 1136239445. Ini bermakna rentetan format mesti mewakili masa rujukan dengan sewajarnya.
Dalam kod yang diberikan, rentetan format longForm salah mewakili masa rujukan sebagai "2006-01-02 15:04:05 -0700". Ketidakpadanan dalam format masa rujukan ini membawa kepada output yang tidak dijangka.
Untuk menyelesaikan isu ini, rentetan format longForm harus diubah suai agar sepadan dengan masa rujukan:
package main import ( "fmt" "log" "time" ) func main() { const longForm = "2006-01-02 15:04:05 -0700" t, err := time.Parse(longForm, "2013-05-13 18:41:34.848 -0700") if err != nil { log.Fatal(err) } fmt.Println(t) }
Dengan longForm yang betul rentetan format, masa. Kaedah parse kini menukar rentetan kepada masa dengan tepat. Nilai masa: "2013-05-13 01:41:34.848 0000 UTC".
Atas ialah kandungan terperinci Mengapakah fungsi Go `time.Parse` saya mengembalikan nilai masa yang tidak dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!