gpt4 book ai didi

parsing - 如何正确解析时区代码

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

在下面的示例中,无论您为 parseAndPrint 函数选择的时区如何,结果始终为“[date] 05:00:00 +0000 UTC”。这段代码有什么问题?时间应根据您选择的时区而变化。 (Go Playground 服务器显然配置为 UTC 时区)。

http://play.golang.org/p/wP207BWYEd

package main

import (
"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())
}

最佳答案

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

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

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

如果你想处理来自其他时区的时间,你需要使用time.Location。您可以使用 time.LoadLocation 从本地时区数据库加载 Locations,并使用 time.ParseInLocation 解析时间。

关于parsing - 如何正确解析时区代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53732459/

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