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
Lepaskan: 2024-12-26 06:25:11
asal
205 orang telah melayarinya

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)
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan