Rumah >pembangunan bahagian belakang >Golang >Mengapa `time.Parse` Tidak Menggunakan Maklumat Zon Waktu Dengan Betul?

Mengapa `time.Parse` Tidak Menggunakan Maklumat Zon Waktu Dengan Betul?

DDD
DDDasal
2024-11-24 07:38:10872semak imbas

Why Doesn't Go's `time.Parse` Use Timezone Information Correctly?

Masa.Menghuraikan Tidak Menggunakan Maklumat Zon Waktu

S: Mengapa masa.Menghuraikan tidak menggunakan maklumat zon waktu? Ia sepatutnya menghasilkan nilai masa yang berbeza untuk zon waktu yang berbeza.

Dalam kod contoh yang disediakan, fungsi masa.Haharai digunakan untuk menghuraikan dua cap masa, "2018-05-11 IST" dan "2018-05 -11 UTC", menggunakan reka letak "2006-01-02 MST". Walau bagaimanapun, output menunjukkan bahawa kedua-dua cap masa menghasilkan masa Unix yang sama:

Output:
1525996800
1525996800

Ini tidak masuk akal kerana IST dan UTC mempunyai offset masa yang berbeza.

J: Singkatan Zon Waktu Ambiguous dan Zero Offset

Punca isu ini terletak pada pengendalian ambiguous singkatan zon waktu dalam masa. Parse. Khususnya, jika tiada offset yang diketahui untuk singkatan zon waktu yang diberikan, time. Parse menganggap zon waktu dengan singkatan yang sama dan offset sifar.

Dalam contoh yang disediakan, "IST" ialah singkatan samar-samar yang boleh merujuk kepada berbilang zon waktu (India, Ireland, Israel, dll.). Oleh itu, time.Parse mentafsirkannya sebagai zon waktu rekaan dengan offset sifar, dengan berkesan mengabaikan perbezaan masa sebenar antara IST dan UTC.

Penyelesaian: Menggunakan Offset Zon Waktu Numerik atau Masa.ParseInLocation()

Untuk menyelesaikan isu ini, terdapat beberapa pilihan tersedia:

  • Gunakan offset zon waktu berangka: Ini melibatkan penetapan offset zon waktu terus dalam rentetan reka letak, memastikan ketepatan.
  • Gunakan masa.ParseInLocation (): Fungsi ini membolehkan anda menentukan zon waktu tersuai apabila menghuraikan masa, menghapuskan isu kekaburan.
  • Muatkan zon waktu yang diingini: Dengan memuatkan zon waktu tertentu (cth., "Asia/Kolkata" untuk IST) dan menggunakan masa.ParseInLocation(), anda boleh memastikan bahawa masa dihuraikan menggunakan offset yang betul.

Atas ialah kandungan terperinci Mengapa `time.Parse` Tidak Menggunakan Maklumat Zon Waktu Dengan Betul?. 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