Rumah >pembangunan bahagian belakang >Golang >Mengapakah `time.Parse()` Go Gagal Menghuraikan Pengecam Zon Waktu Dengan Tepat?

Mengapakah `time.Parse()` Go Gagal Menghuraikan Pengecam Zon Waktu Dengan Tepat?

Barbara Streisand
Barbara Streisandasal
2024-12-01 06:33:14943semak imbas

Why Does Go's `time.Parse()` Fail to Parse Timezone Identifiers Accurately?

Go's Time.Parse() Tidak Menghuraikan Pengecam Zon Waktu

Dalam kod yang disediakan, fungsi time.Parse() digunakan untuk menghuraikan rentetan menjadi masa.Objek masa. Walau bagaimanapun, fungsi itu tidak menghuraikan pengecam zon waktu dalam rentetan, menghasilkan objek masa yang tidak tepat.

Menurut dokumentasi masa.Parse(), gelagat lalai fungsi adalah menggunakan zon waktu lokasi semasa apabila menemui singkatan zon seperti MST. Ini menerangkan sebab baris pertama dan ketiga dalam output tidak betul kerana lokasi semasa ditetapkan kepada CST. Khususnya, rentetan "EDT" ditafsirkan sebagai "Waktu Siang Timur", dan pengimbangan zon waktu untuk CST digunakan, iaitu -0500.

Untuk mengelakkan isu ini dan menghuraikan pengecam zon waktu dengan betul, masa.ParseInLocation () fungsi boleh digunakan. Fungsi ini memerlukan anda untuk menentukan lokasi yang akan digunakan semasa menghuraikan rentetan masa. Dalam kes ini, lokasi "America/New_York" boleh digunakan untuk menghuraikan pengecam zon waktu "EDT" dengan betul.

Sebagai alternatif, rentetan reka letak dalam masa.Parse() boleh diubah suai untuk menyatakan secara eksplisit offset dalam rentetan susun atur itu sendiri, seperti:

format := "2006 01 02 15:04 -0400 MST"
tn, _ := time.Parse(format, date)

Menggunakan salah satu kaedah ini akan memastikan bahawa time.Parse() menghuraikan pengecam zon waktu dengan tepat dan mencipta objek masa.Masa dengan offset yang betul.

Atas ialah kandungan terperinci Mengapakah `time.Parse()` Go Gagal Menghuraikan Pengecam Zon Waktu Dengan Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn