
go 语言中的时区难题
在开发 go 程序时,处理时区可能是个棘手的问题。下面通过一个具体示例来演示这个问题:
func main() {
str := "2021-11-48 11:48:00"
loc, _ := time.LoadLocation("Asia/Shanghai")
ts, err := time.ParseInLocation("2006-01-02 15:04:05", str, loc)
if err != nil {
fmt.Println("ts is", ts)
}
}执行这段代码后,输出结果为 ts is 0001-01-01 00:00:00 +0000 utc,与预期的不一致。这是因为输入的字符串 str 中包含了一个错误,即 11 月 48 号。由于时间中不存在 11 月 48 号,因此无法正确解析为时间类型。
因此,在处理时间时,确保输入的日期和时间值是正确的非常重要。在上面的示例中,可以将 str 更改为一个有效的时间字符串,例如 "2021-11-08 11:48:00"。










