Go 的 Time.Parse() 不解析时区标识符
在提供的代码中, time.Parse() 函数用于将字符串解析为 time.Time 对象。但是,该函数不会解析字符串中的时区标识符,从而导致时间对象不准确。
根据 time.Parse() 文档,该函数的默认行为是使用当遇到像 MST 这样的区域缩写时,当前位置的时区。这解释了为什么输出中的第一行和第三行不正确,因为当前位置设置为 CST。具体来说,“EDT”字符串被解释为“东部夏令时间”,并使用 CST 的时区偏移量,即 -0500。
为了避免此问题并正确解析时区标识符, time.ParseInLocation可以使用()函数。该函数要求您指定解析时间字符串时要使用的位置。在这种情况下,“America/New_York”位置可用于正确解析“EDT”时区标识符。
或者,可以修改 time.Parse() 中的布局字符串以显式指定中的偏移量布局字符串本身,例如:
format := "2006 01 02 15:04 -0400 MST" tn, _ := time.Parse(format, date)
使用其中一种方法将确保 time.Parse() 准确解析时区标识符并创建一个具有正确偏移量的 time.Time 对象。
以上是为什么 Go 的 time.Parse() 无法准确解析时区标识符?的详细内容。更多信息请关注PHP中文网其他相关文章!