我正在尝试使用特定于用户的时区位置将字符串解析为时间 -// error handling skipped for brevityloc, _ := time.LoadLocation("Asia/Kolkata")now, _ := time.ParseInLocation("15:04", "10:10", loc)fmt.Println("Location : ", loc, " Time : ", now)我在系统上得到的输出是 -Location : Asia/Kolkata Time : 0000-01-01 10:10:00 +0553 HMT这个HMT时区是从哪里来的?如果不是解析我使用的时间now := time.Now().In(loc),打印的时区是正确的 - IST。我的时区解析有问题还是我的系统时区数据库有问题?
1 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
now
这可能是您的年份为 0000 而time.Now()
返回当前时间这一事实的遗留问题。时区很奇怪,某些地方并不总是使用相同的时区。这是IANA 时区数据库的摘录:
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Kolkata 5:53:28 - LMT 1854 Jun 28 # Kolkata
5:53:20 - HMT 1870 # Howrah Mean Time?
5:21:10 - MMT 1906 Jan 1 # Madras local time
5:30 - IST 1941 Oct
5:30 1:00 +0630 1942 May 15
5:30 - IST 1942 Sep
5:30 1:00 +0630 1945 Oct 15
5:30 - IST
如果我的解释正确的话,HMT 似乎是从 1854 年到 1870 年使用的——我不确定为什么这会导致它用于 0000 年,这似乎属于 LMT,但 Go 数据库可能是略有不同(或者我可能误解了数据库)。如果您担心用于历史日期的正确时区(如 0000),我不确定我能否给出一个很好的答案,但是对于任何最近的 IST 都应该正确使用。
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报
0/150
提交
取消