在下面的示例中,无论您为 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
。
- 2 回答
- 0 关注
- 214 浏览
添加回答
举报
0/150
提交
取消