我需要使用 HTTP 日期标准 RFC2616 来格式化时间戳。但是,该标准说:所有 HTTP 日期/时间戳都必须以格林威治标准时间 (GMT) 表示,无一例外。从一点点挖掘 GMT 和 UTC 不是一回事。在 Go 中是否有将时间戳转换为 GMT 的正确方法?
2 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
使用http.TimeFormat布局来格式化 HTTP 标头的时间。此布局采用 UTC 位置的时间。
s := t.UTC().Format(http.TimeFormat)
如果已知时间为 UTC,则可以跳过对 UTC() 的调用:
s := t.Format(http.TimeFormat)
白衣染霜花
TA贡献1796条经验 获得超10个赞
如果我没看错,UTC() 方法是有问题的,因为如果时区显示为文本(例如格式 time.RFC1123),它将以“UTC”结尾。请求是如何让它成为“GMT”。
我认为这是需要的:
gmtTimeLoc := time.FixedZone("GMT", 0) s := t.In(gmtTimeLoc).Format(http.TimeFormat)
在我的例子中,使用格式 time.RFC1123,我得到:
2022 年 6 月 9 日星期六 21:01:08 GMT
(在我的实现中,我创建了一次 gmtTimeLoc 并重新使用它)
- 2 回答
- 0 关注
- 294 浏览
添加回答
举报
0/150
提交
取消