Rumah >pembangunan bahagian belakang >Golang >Mengapakah `time.Parse` Go Mengabaikan Maklumat Zon Waktu?

Mengapakah `time.Parse` Go Mengabaikan Maklumat Zon Waktu?

Linda Hamilton
Linda Hamiltonasal
2024-11-21 20:02:15914semak imbas

Why Does Go's `time.Parse` Ignore Timezone Information?

Mengapa Time.Parse Tidak Menggunakan Maklumat Zon Waktu

Fungsi masa.Parse direka untuk menghuraikan rentetan masa dan menjana yang sepadan masa.Nilai objek. Walau bagaimanapun, ia tidak mengambil kira maklumat zon waktu. Tingkah laku ini boleh membawa kepada hasil yang tidak dijangka apabila menghuraikan rentetan masa yang termasuk singkatan zon waktu.

Pertimbangkan coretan kod berikut:

import "time"

func main() {
    t, err := time.Parse("2006-01-02 MST", "2018-05-11 IST")
    if err != nil {
        return
    }
    t2, err := time.Parse("2006-01-02 MST", "2018-05-11 UTC")
    if err != nil {
        return
    }
    fmt.Println(t.Unix())
    fmt.Println(t2.Unix())
}

Kod ini menghuraikan dua rentetan masa, "2018-05-11 IST" dan "2018-05-11 UTC", dan mencetak cap waktu Unix masa yang terhasil nilai. Walau bagaimanapun, outputnya mengejutkan:

1525996800
1525996800

Kedua-dua cap masa adalah sama, walaupun rentetan masa merujuk kepada zon waktu yang berbeza. Ini kerana time.Parse mengabaikan maklumat zon waktu apabila menghuraikan rentetan masa. Ia menganggap rentetan masa seolah-olah berada dalam zon waktu setempat dan ia tidak melaraskan untuk sebarang zon waktu yang diimbangi.

Untuk menyelesaikan isu ini, anda boleh menggunakan salah satu pendekatan berikut:

  • Gunakan reka letak masa yang termasuk zon berangka mengimbangi. Contohnya, anda boleh menggunakan reka letak berikut: "2006-01-02 -0700". Reka letak ini menentukan offset zon waktu (-0700 dalam kes ini) sebagai sebahagian daripada rentetan masa.
  • Gunakan fungsi masa.ParseInLocation. Fungsi ini mengambil hujah lokasi, yang menentukan zon waktu untuk digunakan semasa menghuraikan rentetan masa.
  • Buat zon waktu tersuai menggunakan time.FixedZone. Ini membolehkan anda menentukan offset zon waktu dan singkatan untuk zon waktu tertentu. Anda kemudiannya boleh menggunakan zon waktu tersuai ini sebagai hujah kepada fungsi masa. Parse.

Atas ialah kandungan terperinci Mengapakah `time.Parse` Go Mengabaikan Maklumat Zon Waktu?. 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