在 Go 中将 UTC 转换为本地时间:排除错误结果
将 UTC 转换为本地时间时,重要的是要考虑时区差异和执行转换的正确方法。
在提供的代码片段中,尝试手动添加时区偏移由于夏令时等因素,当前 UTC 时间的持续时间可能会导致不正确的结果。
时区映射:
代码依赖于静态映射来存储时区偏移。更可靠的方法是使用 time.LoadLocation 函数,该函数根据指定的名称动态加载时区信息。这样可以保证时区差异的准确性。
内置时区转换:
建议使用 time.In 方法,而不是手动调整时间,它将时间戳转换为特定时区。这考虑了当前设置和夏令时调整,提供更准确的结果。
代码示例:
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.LoadLocation 和时间。在此修订后的代码可确保本地时间从 UTC 正确转换,同时考虑到时区差异和夏令时。
以上是为什么在 Go 中手动将 UTC 转换为本地时间经常会产生错误的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!