Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah `time.Parse()` Go Gagal dengan Singkatan Zon Waktu Samar-samar?

Mengapakah `time.Parse()` Go Gagal dengan Singkatan Zon Waktu Samar-samar?

Susan Sarandon
Susan Sarandonasal
2024-11-19 11:18:02289semak imbas

Why Does Go's `time.Parse()` Fail with Ambiguous Timezone Abbreviations?

Time.Parse() Tidak Dapat Memproses Maklumat Zon Waktu Kerana Singkatan Kabur

Fungsi masa.Parse(), apabila cuba mentafsir cap masa dengan singkatan zon waktu (cth., "MST"), menghadapi beberapa batasan. Khususnya, jika zon waktu yang disingkatkan tidak ditakrifkan secara eksplisit di lokasi semasa atau jika ia samar-samar (seperti "IST", yang boleh mewakili berbilang zon waktu), fungsi tersebut menganggap lokasi fabrikasi dengan offset sifar.

Ini tingkah laku mengakibatkan percanggahan apabila menghuraikan dan membandingkan cap masa dengan singkatan zon waktu yang berbeza. Contohnya, dalam kod yang diberikan:

t, err := time.Parse("2006-01-02 MST", "2018-05-11 IST")
t2, err := time.Parse("2006-01-02 MST", "2018-05-11 UTC")

Walaupun mewakili detik masa yang berbeza dalam zon waktu masing-masing, kedua-dua "2018-05-11 UTC" dan "2018-05-11 UTC" dihuraikan mengikut masa. Parse() sebagai mempunyai offset sifar yang sama. Akibatnya, cap masa Unix mereka adalah sama, menunjukkan nilai masa yang sama.

Untuk mengatasi isu ini, pertimbangkan untuk menggunakan reka letak masa dengan zon berangka mengimbangi, seperti "-0700" untuk perbezaan tujuh jam daripada UTC . Sebagai alternatif, pertimbangkan untuk menggunakan masa.ParseInLocation() dengan FixedZone yang dibina secara manual atau memuatkan lokasi zon waktu tertentu (cth., "Asia/Kolkata" untuk IST India). Pendekatan ini memberikan kawalan yang lebih tepat ke atas pengendalian zon waktu dan memastikan penghuraian masa yang tepat.

Atas ialah kandungan terperinci Mengapakah `time.Parse()` Go Gagal dengan Singkatan Zon Waktu Samar-samar?. 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