我需要使用 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 關注
- 370 瀏覽
添加回答
舉報
0/150
提交
取消