Rumah >pembangunan bahagian belakang >Golang >Mengapa Menambah Offset UTC Secara Manual Gagal Menukar UTC kepada Waktu Tempatan dengan Tepat dalam Go?

Mengapa Menambah Offset UTC Secara Manual Gagal Menukar UTC kepada Waktu Tempatan dengan Tepat dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-26 06:25:11223semak imbas

Why Does Manually Adding UTC Offset Fail to Accurately Convert UTC to Local Time in Go?

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!

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