在 Go 中,处理时区有时会导致意外行为。让我们深入研究使用自定义时间格式解析时区时遇到的常见问题。
提供的代码片段定义了一个 parseAndPrint 函数,旨在解析所表示的时间为特定时区内的“05:00:00”,然后以 UTC 格式打印结果。然而,无论指定的时区如何,结果时间都保持不变,每次都显示“[date] 05:00:00 0000 UTC”。
根本原因在于如何在 parseAndPrint 函数中使用 time.Parse 解析时间。当前时间通过 time.Now() 获取并作为参数传递给 time.Parse,后者根据指定的时区缩写解释输入字符串。
但是,解析是在系统的本地时区中完成的,不是指定的所需时区。无论预期的时区如何,这种差异都会导致错误的解析和 UTC 的一致输出。
要正确处理时区,解析时区的字符串表示至关重要使用正确的 time.Location 实例在指定时区中的时间。这涉及以下步骤:
通过采用这种方法,代码将正确解析并打印所需时区中提供的时间,并考虑到时区之间的时差。
以上是为什么我的 Go 时区解析总是返回 UTC?的详细内容。更多信息请关注PHP中文网其他相关文章!