Tukar UTC kepada Waktu Tempatan dalam Go dengan Ketepatan
Soalan:
Dalam percubaan untuk menukar masa UTC kepada waktu tempatan bagi negara tertentu, program Go menemui hasil yang salah walaupun mempertimbangkan perbezaan UTC. Apakah yang boleh menjadi isu asas?
Jawapan:
Ralat timbul apabila masa dikira dengan menambah perbezaan UTC secara manual sebagai tempoh. Pendekatan ini tidak mengambil kira faktor lain, seperti waktu penjimatan siang (DST).
Untuk menukar waktu UTC kepada waktu tempatan dengan tepat, kaedah yang betul ialah menggunakan masa.LoadLocation. Begini cara anda boleh melakukannya:
import "time" // A map of country names to their time zone names var countryTz = map[string]string{ "Hungary": "Europe/Budapest", "Egypt": "Africa/Cairo", } // Function to convert UTC time to the local time of a specific country func timeIn(name string) time.Time { loc, err := time.LoadLocation(countryTz[name]) if err != nil { panic(err) } return time.Now().In(loc) } // Example usage func main() { utc := time.Now().UTC().Format("15:04") hun := timeIn("Hungary").Format("15:04") eg := timeIn("Egypt").Format("15:04") fmt.Println(utc, hun, eg) }
Kod ini mula-mula mentakrifkan pemetaan nama negara kepada nama zon waktu yang sepadan. Kemudian, time.LoadLocation digunakan untuk mendapatkan zon waktu tertentu untuk negara tertentu. Dengan memanggil masa.Now().In(loc), masa UTC semasa ditukar kepada waktu tempatan untuk negara yang dikehendaki, dengan mengambil kira DST dan faktor lain.
Atas ialah kandungan terperinci Mengapa Menambah Offset UTC Secara Manual Gagal Menukar UTC kepada Waktu Tempatan dengan Tepat dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!