Dalam Go, pengendalian zon waktu kadangkala boleh membawa kepada tingkah laku yang tidak dijangka. Mari kita mendalami isu biasa yang dihadapi semasa menghuraikan zon waktu menggunakan format masa tersuai.
Coretan kod yang disediakan mentakrifkan fungsi parseAndPrint yang bertujuan untuk menghuraikan masa yang diwakili sebagai "05:00:00" dalam zon waktu tertentu dan kemudian mencetak hasilnya dalam UTC. Walau bagaimanapun, masa yang terhasil kekal tidak berubah, tanpa mengira zon waktu yang ditentukan, memaparkan "[tarikh] 05:00:00 0000 UTC" setiap kali.
Punca utama terletak pada bagaimana masa dihuraikan menggunakan masa. Parse dalam fungsi parseAndPrint. Masa semasa diambil dengan masa.Now() dan dihantar sebagai hujah kepada masa. Parse, yang mentafsir rentetan input mengikut singkatan zon waktu yang ditentukan.
Walau bagaimanapun, penghuraian dilakukan dalam zon waktu tempatan sistem , bukan zon waktu yang dikehendaki ditentukan. Percanggahan ini membawa kepada penghuraian yang salah dan output yang konsisten dalam UTC, tanpa mengira zon waktu yang dimaksudkan.
Untuk mengendalikan zon waktu dengan betul, adalah penting untuk menghuraikan perwakilan rentetan bagi masa dalam zon waktu yang ditentukan menggunakan masa yang betul. Contoh lokasi. Ini melibatkan langkah berikut:
Dengan menggabungkan pendekatan ini, kod akan menghuraikan dan mencetak masa yang disediakan dengan betul dalam zon waktu yang dikehendaki, mengambil kira perbezaan masa antara zon waktu.
Atas ialah kandungan terperinci Mengapa Penghuraian Zon Waktu My Go Sentiasa Mengembalikan UTC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!