Time.Parse 不使用时区信息
问:为什么 time.Parse 不使用时区信息?它应该为不同时区生成不同的时间值。
在提供的示例代码中,time.Parse 函数用于解析两个时间戳,“2018-05-11 IST”和“2018-05” -11 UTC”,使用“2006-01-02 MST”布局。但是,输出显示两个时间戳产生相同的 Unix 时间:
Output: 1525996800 1525996800
这没有意义,因为 IST 和 UTC 具有不同的时间偏移。
A:不明确的时区缩写和零偏移
这个问题的根源在于不明确的处理time.Parse 中的时区缩写。具体来说,在给定时区缩写缺乏已知偏移的情况下,time.Parse 假定时区具有相同的缩写 和零偏移量 。
在提供的示例中,“IST”是一个不明确的缩写,可能指多个时区(印度、爱尔兰、以色列等)。因此,time.Parse 将其解释为偏移量为零的虚构时区,从而有效地忽略了 IST 和 UTC 之间的实际时间差。
解决方案:使用数字时区偏移量或 Time.ParseInLocation()
要解决此问题,有多种选择可用:
以上是为什么 Go 的 `time.Parse` 不能正确使用时区信息?的详细内容。更多信息请关注PHP中文网其他相关文章!