如何解决time.ParseInLocation,位置为零
我正在解析这样的位置:
estLocation,err := time.LoadLocation("America/New_York")
d,err := time.ParseInLocation(time.RFC3339,fmt.Sprintf("%sT%s:00.000Z",c.Date,c.Open),estLocation)
当我在解析后检查d
时,时间部分看起来很好(即字符串已解析为我期望的时间),但是位置为nil
。
这是为什么?我需要将时间解析为纽约时间(以便可以在其上调用.UTC()
并将其转换为UTC时间。
解决方法
日期字符串末尾的Z表示“ zulu”,即UTC时间;因此,您的时间明确表示它处于UTC时间。参见tools.ietf.org/html/rfc3339#section-2
如果传递有效的偏移量,则会得到有效的结果:https://play.golang.org/p/QW8M3_eznDL
d,err := time.ParseInLocation(time.RFC3339,fmt.Sprintf("%sT%s:00.000+05:00","2001-01-01","12:34"),estLocation)
文档对此进行了相应说明(强调我的意思):
在没有时区信息的情况下,Parse将时间解释为UTC; ParseInLocation将时间解释为给定位置
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。