Rumah > pembangunan bahagian belakang > Golang > Mengapa `time.Parse()` Tidak Mengendalikan Pengecam Zon Waktu?

Mengapa `time.Parse()` Tidak Mengendalikan Pengecam Zon Waktu?

Susan Sarandon
Lepaskan: 2024-11-26 01:14:10
asal
409 orang telah melayarinya

Why Doesn't Go's `time.Parse()` Handle Timezone Identifiers?

Mengapa masa Go.Parse() Tidak Menghuraikan Pengecam Zon Waktu

Dalam Go, fungsi masa.Parse() digunakan untuk menghuraikan rentetan tarikh dan masa ke dalam nilai Masa. Walau bagaimanapun, tidak seperti pustaka tarikh dan masa yang lain, time.Parse() tidak menghuraikan pengecam zon waktu secara automatik seperti "EST" atau "EDT". Sebaliknya, ia menggunakan zon waktu sistem semasa untuk menentukan offset untuk masa itu.

Masalahnya

Kod yang disediakan dalam soalan menunjukkan isu ini. Ia cuba menghuraikan rentetan tarikh ("2018 08 01 12:00 EDT") menggunakan masa.Parse() dalam dua cara: dengan dan tanpa menyatakan lokasi zon waktu yang diingini (America/New_York).

Apabila menggunakan time.Parse() tanpa menyatakan lokasi, pengecam zon waktu ("EDT") tidak dikenali dan masa dihuraikan sebagai berada dalam zon waktu sistem semasa ("0000"). Ini mengakibatkan nilai masa yang salah.

Penyelesaian

Untuk menghuraikan rentetan tarikh dan masa dengan betul yang termasuk pengecam zon waktu, fungsi masa.ParseInLocation() mesti digunakan. Fungsi ini mengambil parameter Lokasi tambahan, yang menentukan zon waktu yang diingini untuk masa yang dihuraikan.

Dalam kod yang disediakan, time.LoadLocation() digunakan untuk mencipta objek Lokasi untuk zon waktu yang dikehendaki ("America/New_York ") sebelum menghantarnya ke masa.ParseInLocation(). Ini memastikan bahawa pengecam zon waktu ("EDT") dihuraikan dengan betul dan nilai masa yang betul dikembalikan.

Penyelesaian Alternatif

Sebagai alternatif, seseorang boleh menggunakan tarikh dan pustaka masa yang menyokong penghuraian zon waktu secara jelas, seperti pustaka "time.go" yang popular. Pustaka ini menyediakan fungsi seperti ParseInZone(), yang membenarkan penghuraian terus pengecam zon waktu.

Atas ialah kandungan terperinci Mengapa `time.Parse()` Tidak Mengendalikan Pengecam Zon Waktu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan