在提供的 Go 代码片段中,parseAndPrint 函数旨在解析特定时间并在指定时区中显示它。但是,无论选择的时区如何,它始终返回“[date] 05:00:00 0000 UTC”。要解决此问题,必须更深入地了解时区解析和转换。
解析时间值时,您通常会在当前本地时区中进行解析。但是,时区缩写特定于您解析的位置。如果需要解析不同时区的时间,则必须显式指定适当的时间位置或时区偏移量。
所提供代码中的问题在于以下行:测试时间是使用 time.Date 创建的。此行将测试时间的时区设置为系统的本地时区,即使您在解析输入字符串时提供了时区参数。因此,将测试时间转换为 UTC 始终会产生与本地时区相同的偏移量。
要解决此问题,您需要使用提供的时区信息创建测试时间。这可以通过使用 time.LoadLocation 加载相应的时间位置对象,然后使用 time.ParseInLocation 解析该位置的输入字符串来完成。生成的时间将具有正确的时区偏移。
根据您的具体要求,您可以考虑处理时区和转换的替代方法:
以上是为什么我的 Go 时区转换总是返回 UTC?的详细内容。更多信息请关注PHP中文网其他相关文章!