gpt4 book ai didi

time - 在 Go 中将 UTC 时间转换为 "local"时间

转载 作者:数据小太阳 更新时间:2023-10-29 03:19:11 28 4
gpt4 key购买 nike

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

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

由于某些原因,结果是错误的。例如 Hungary有一个小时的差异。知道为什么我会得到不正确的结果吗?

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)
}

最佳答案

请记住,playground 的时间设置为 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)
}

关于time - 在 Go 中将 UTC 时间转换为 "local"时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56559352/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com