如何将UTC时间转换为local time

我已经为所有需要当地时间的国家创建了一张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)
}

推荐答案

请记住,操场的时间设置为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相关问答推荐

Golang ==错误:OCI运行时创建失败:无法启动容器进程:exec:./" bin:stat./" bin:没有这样的文件或目录:未知

在Uber FX中实现后台进程正常关闭的正确方式是什么?

JetBrains Goland,禁用突出显示测试文件

nixOS 上的 Nginx 反向代理在try 加载 css/js 时返回 404

Go Gin:验证 base64

使用GOTK3和librsvg在Go中如何加载内联SVG?

这是泛型的有效用例吗?

如何忽略打印达到最大深度限制 go colly

Go test "-run -" 标志执行测试更快

Gorm delete with clauses sqlmock 测试

读取非UTF8编码的文件内容并正确打印出来

确保 Go 1.20 编译时的严格可比性?

Golang Gin 绑定请求正文 XML 到 Slice

为什么 reflect.TypeOf(new(Encoder)).Elem() != reflect.TypeOf(interfaceVariable)?

Golang计算 struct struct 中的字段数

如何使用 math/big 对 bigInt 进行取模?

GoLang 遍历 yaml 文件

gqlgen go,通过添加一个解析器来减少数据库调用

Golang 有类似 C++ 的 decltype 的东西吗?

为什么 go-cmp Equal() 说 struct 不是完全相等的,即使所有字段都非常相等?