为了账号安全,请及时绑定邮箱和手机立即绑定

为什么使用 ParseInLocation 打印不同的时区?

为什么使用 ParseInLocation 打印不同的时区?

Go
慕村225694 2023-05-04 16:57:45
我正在尝试使用特定于用户的时区位置将字符串解析为时间 -// 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 都应该正确使用。



查看完整回答
反对 回复 2023-05-04
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信