在Go中将UTC转换为“本地”时间

如何将UTC时间转换为 当地时间

我已经为我需要当地时间的所有国家/地区创建了具有UTC时差的地图。然后,我将该差异作为持续时间添加到当前时间(UTC),并打印结果希望是该特定国家/地区的当地时间。

由于某些原因,结果是错误的。例如,在匈牙利,相差一小时。知道为什么我得到的结果不正确吗?

package main

import "fmt"

import "time"

func main() {

m := make(map[string]string)

m["Hungary"] = "+01.00h"

offSet, err := time.ParseDuration(m["Hungary"])

if err != nil {

panic(err)

}

t := time.Now().UTC().Add(offSet)

nice := t.Format("15:04")

fmt.Println(nice)

}

回答:

请记住,操场的时间设置为2009-11-10 23:00:00 +0000 UTC,因此它正在工作。

正确的方法是使用time.LoadLocation,这是一个示例:

var countryTz = map[string]string{

"Hungary": "Europe/Budapest",

"Egypt": "Africa/Cairo",

}

func timeIn(name string) time.Time {

loc, err := time.LoadLocation(countryTz[name])

if err != nil {

panic(err)

}

return time.Now().In(loc)

}

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)

}

以上是 在Go中将UTC转换为“本地”时间 的全部内容, 来源链接: utcz.com/qa/426032.html

回到顶部