为了账号安全,请及时绑定邮箱和手机立即绑定

如何正确解析时区代码

如何正确解析时区代码

Go
慕村225694 2021-08-10 16:06:44
在下面的示例中,无论您为 parseAndPrint 函数选择的时区如何,结果始终为“[date] 05:00:00 +0000 UTC”。这段代码有什么问题?时间应根据您选择的时区而变化。(Go Playground 服务器显然是在 UTC 时区配置的)。http://play.golang.org/p/wP207BWYEdpackage mainimport (    "fmt"    "time")func main() {    now := time.Now()    parseAndPrint(now, "BRT")    parseAndPrint(now, "EDT")    parseAndPrint(now, "UTC")}func parseAndPrint(now time.Time, timezone string) {    test, err := time.Parse("15:04:05 MST", fmt.Sprintf("05:00:00 %s", timezone))    if err != nil {        fmt.Println(err)        return    }    test = time.Date(        now.Year(),        now.Month(),        now.Day(),        test.Hour(),        test.Minute(),        test.Second(),        test.Nanosecond(),        test.Location(),    )    fmt.Println(test.UTC())}
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

当您解析时间时,您是在当前位置解析它,只要这是您所期望的就可以了,并且时区缩写在您所在的位置是已知的。

如果您可以放弃时区,那么将您处理的所有时间都标准化为 UTC 会容易得多。

下一个最简单的方法是处理带有显式偏移量的所有内容,例如-05:00.

如果要处理源自其他时区的时间,则需要使用time.Location. 您可以使用 加载本地时区数据库中的位置time.LoadLocation,并使用 解析时间time.ParseInLocation


查看完整回答
反对 回复 2021-08-10
  • 2 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信