我嘗試使用golang的時間包從SQL服務器格式化一些帶有時區的日期,但發現:package mainimport ( "time" "fmt")func main() { loc, _ := time.LoadLocation("Asia/Shanghai") endTime1 := time.Date(1, 1, 17, 23, 59, 59, 999*int(time.Millisecond), loc) fmt.Printf("format string 1 : %s\n", endTime1.UTC().Format("2006-01-02T15:04:05.000Z")) endTime2 := time.Date(2021, 1, 17, 23, 59, 59, 999*int(time.Millisecond), loc) fmt.Printf("format string 2 : %s\n", endTime2.UTC().Format("2006-01-02T15:04:05.000Z"))}# outputformat string 1 : 0001-01-17T15:54:16.999Zformat string 2 : 2021-01-17T15:59:59.999Z輸出的“HH:mm:ss”部分不同。我終于找到了關鍵時間是1900-12-31,但沒有從源代碼或互聯網上找到任何關于那一天的線索。
1 回答

www說
TA貢獻1775條經驗 獲得超8個贊
似乎與上海時區有關。
從此頁面,您可以閱讀
1901 年 1 月 1 日 - 時區更改 (LMT → CST) 當當地標準時間即將達到 1901 年 1 月 1 日星期二時,00:00:00 時鐘向后調 0:05:43 小時到 1900 年 12 月 31 日星期一,改為當地標準時間 23:54:17。
此外,我們可以在 go 文檔中找到更多信息
夏令時轉換跳過或重復時間。例如,在美國,2011年3月13日凌晨2:15從未發生過,而2011年11月6日凌晨1點15分發生了兩次。在這種情況下,時區的選擇以及時間的選擇沒有明確定義。Date 返回在轉換中涉及的兩個區域之一中正確的時間,但它不保證哪個區域是正確的。
- 1 回答
- 0 關注
- 77 瀏覽
添加回答
舉報
0/150
提交
取消