Menukar Offset Masa kepada Lokasi/Zon Waktu dalam Go
Apabila bekerja dengan data sensitif masa, selalunya perlu menukar masa mengimbangi kepada masa yang boleh digunakan.Objek lokasi. Ini membenarkan perwakilan tepat dan manipulasi nilai masa berbanding zon waktu tertentu.
Sebagai contoh, pertimbangkan coretan kod berikut:
func main() { offset := "+1100" t, err := time.Parse("15:04 GMT-0700","15:06 GMT"+offset) if err != nil { fmt.Println("fail", err) } fmt.Println(t) fmt.Println(t.UTC()) fmt.Println(t.Location()) }
Semasa kod ini menghuraikan nilai masa dengan yang ditentukan mengimbangi, memanggil t.Location() selepas itu tidak mengembalikan maklumat yang bermakna.
Untuk menangani isu ini, kita perlu secara manual cipta masa.Objek lokasi yang mewakili offset masa yang dikehendaki. Ini boleh dicapai menggunakan masa.Fungsi Zon Tetap:
loc := time.FixedZone("UTC+11", +11*60*60)
Pembolehubah lokasi ialah masa.Objek lokasi yang mewakili zon waktu UTC 11. Kami kemudiannya boleh menetapkan pembolehubah t kami untuk berada di lokasi ini:
t = t.In(loc)
Dengan berbuat demikian, kami memastikan bahawa ofset GMT direkodkan dan kami boleh mengeluarkan masa berbanding dengan offset masa lokasi sebenar pengguna akhir .
Berikut ialah contoh:
package main import ( "fmt" "time" ) func main() { loc := time.FixedZone("UTC+11", +11*60*60) t := time.Now() fmt.Println(t) fmt.Println(t.Location()) t = t.In(loc) fmt.Println(t) fmt.Println(t.Location()) fmt.Println(t.UTC()) fmt.Println(t.Location()) }
Kod ini mengeluarkan berikut:
2009-11-10 23:00:00 +0000 UTC m=+0.000000001 UTC 2009-11-11 10:00:00 +1100 UTC+11 UTC+11 2009-11-10 23:00:00 +0000 UTC UTC+11
Seperti yang anda lihat, masa t kini berada dalam zon waktu UTC 11 dan Lokasinya() mengembalikan maklumat yang sesuai. Ini membolehkan operasi dan pengiraan berasaskan masa yang tepat.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Offset Masa kepada Zon Waktu dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!