golang 时间戳转换为时区同义词给出不同的结果
golang timestamp conversion give different result for timezone synonyms
我知道Moscow Time set to UTC+03:00
因此,时区 Europe/Moscow
和 Etc/GMT+3
必须相同
但不是
msk, _ := time.LoadLocation("Europe/Moscow")
gmt3, _ := time.LoadLocation("Etc/GMT+3")
fmt.Println("MSK", now.In(msk).Format(isoFmt))
fmt.Println("GMT+3", now.In(gmt3).Format(isoFmt))
Check 你自己。我做错了什么?
play 为 isoFmt=time.RFC3339
给出了一个非常奇怪的结果
MSK 2009-11-11T02:00:00+03:00
GMT+3 2009-11-10T20:00:00-03:00
这两个时区实际上不是同义词。根据 list of timezones, Europe/Moscow
has UTC offset of +03:00
, while Etc/GMT+3
has UTC offset of −03:00
. Etc/GMT+3
实际上位于南美某处和其他一些位置。
所以 Go 没有任何问题(在这个特定的例子中),但是你混淆的根源很清楚。
我知道Moscow Time set to UTC+03:00
因此,时区 Europe/Moscow
和 Etc/GMT+3
必须相同
但不是
msk, _ := time.LoadLocation("Europe/Moscow")
gmt3, _ := time.LoadLocation("Etc/GMT+3")
fmt.Println("MSK", now.In(msk).Format(isoFmt))
fmt.Println("GMT+3", now.In(gmt3).Format(isoFmt))
Check 你自己。我做错了什么?
play 为 isoFmt=time.RFC3339
MSK 2009-11-11T02:00:00+03:00
GMT+3 2009-11-10T20:00:00-03:00
这两个时区实际上不是同义词。根据 list of timezones, Europe/Moscow
has UTC offset of +03:00
, while Etc/GMT+3
has UTC offset of −03:00
. Etc/GMT+3
实际上位于南美某处和其他一些位置。
所以 Go 没有任何问题(在这个特定的例子中),但是你混淆的根源很清楚。