如何将 UTC 时间转换为当地时间?
我已经为我需要当地时间的所有国家/地区创建了一张具有 UTC 差异的地图。然后,我将该差异作为持续时间添加到当前时间 (UTC) 中,并打印结果,希望这是该特定国家/地区的当地时间。
由于某些原因,结果是错误的。例如与Hungary http://www.timeanddate.com/worldclock/hungary/budapest有一个小时的时差。知道为什么我得到的结果不正确吗?
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)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)