【发布时间】:2021-07-09 06:58:34
【问题描述】:
我在下面编写了一个简单的 Go 代码来获取系统时区。它工作正常并返回系统的当前时区。问题是如果我在流程执行之间更改时区,那么它不会返回更新的时区。它只返回旧时区。
package main
import (
"fmt"
"time"
)
func main() {
for i := 0; i < 10; i++ {
t := time.Now()
zone, offset := t.Zone()
fmt.Println(zone, offset)
z, _ := t.Zone()
fmt.Println("timezone", z)
}
}
【问题讨论】:
-
如何“更改流程执行之间的时区”?
-
@jub0bs 我认为他在谈论更改系统时区,程序执行
-
如果您只需要处理时间,独立于系统设置,请使用 UTC;例如
t := time.Now().UTC(). -
@jub0bs 这只是一个示例程序。我正在调试模式下通过添加断点并在下次调用之前更改时区来测试它。我的主程序始终在内存中作为后台进程运行,该进程以特定频率收集时区信息,因此如果用户更改系统时区,它将无法获得正确的时区。
-
@MrFuppes:我的应用程序要求是读取系统当前时区的用户当前活动数据,所以我需要读取系统当前时区。我正在阅读 UTC 时间,但也想阅读系统时区。