Dalam coretan kod Go yang disediakan, fungsi parseAndPrint bertujuan untuk menghuraikan masa tertentu dan memaparkannya dalam zon waktu yang ditentukan. Walau bagaimanapun, ia sentiasa mengembalikan "[tarikh] 05:00:00 0000 UTC" tanpa mengira zon waktu yang dipilih. Untuk menyelesaikan isu ini, pemahaman yang lebih mendalam tentang penghuraian dan penukaran zon waktu adalah penting.
Apabila menghuraikan nilai masa, anda biasanya melakukannya dalam zon waktu tempatan semasa anda. Walau bagaimanapun, singkatan zon waktu adalah khusus untuk lokasi dari mana anda sedang menghuraikan. Jika anda perlu menghuraikan masa dari zon waktu yang berbeza, anda mesti menyatakan secara eksplisit lokasi masa atau zon waktu yang sesuai.
Isu dalam kod yang disediakan terletak pada baris di mana masa ujian dibuat menggunakan masa.Tarikh. Baris ini menetapkan zon waktu masa ujian kepada zon waktu tempatan sistem, walaupun anda membekalkan parameter zon waktu semasa menghuraikan rentetan input. Oleh itu, penukaran masa ujian kepada UTC sentiasa menghasilkan pengimbangan yang sama seperti zon waktu setempat.
Untuk membetulkannya, anda perlu mencipta masa ujian menggunakan maklumat zon waktu yang disediakan. Ini boleh dilakukan dengan memuatkan objek lokasi masa yang sepadan menggunakan masa.LoadLocation dan kemudian menghuraikan rentetan input di lokasi tersebut menggunakan masa.ParseInLocation. Masa yang terhasil akan mempunyai zon waktu yang betul diimbangi.
Bergantung pada keperluan khusus anda, anda boleh mempertimbangkan pendekatan alternatif untuk mengendalikan zon waktu dan penukaran:
Atas ialah kandungan terperinci Mengapa Penukaran Zon Waktu My Go Sentiasa Mengembalikan UTC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!