假設(shè)我有以下內(nèi)容:Postgres 數(shù)據(jù)庫中帶有列的表TIMESTAMP。數(shù)據(jù)庫時區(qū)設(shè)置為 UTC 以外的時間。一些使用CURRENT_TIMESTAMPor插入時間戳值的 SQL 語句NOW()正如 Postgres 文檔中所述:CURRENT_TIMESTAMP() 函數(shù)返回一個帶有時區(qū)的 TIMESTAMP,表示事務(wù)開始的日期和時間。因此,以下語句默默地將本地時間戳轉(zhuǎn)換為絕對時間戳:INSERT INTO foo (id, timestamp_column) VALUES (0, CURRENT_TIMESTAMP);假設(shè) Go 程序?qū)⒋藬?shù)據(jù)讀入一個time.Time對象,該對象將有一個空Location:fmt.Println(timeFromDb.Location().String() == "") // true它被解釋為 UTC。此時我確實知道 Go 時間timeFromDb實際上不是 UTC,而且我也知道數(shù)據(jù)庫時區(qū)設(shè)置是什么。如何在這個時間對象中設(shè)置正確的時區(qū)?在實踐中:// beforefmt.Println(timeFromDb) // 2009-11-10 10:00:00fmt.Println(timeFromDb.Location()) // <empty>fmt.Println(timeFromDb.UTC()) // 2009-11-10 10:00:00// magic?// afterfmt.Println(timeFromDb) // 2009-11-10 10:00:00fmt.Println(timeFromDb.Location()) // America/Vancouverfmt.Println(timeFromDb.UTC()) // 2009-11-10 18:00:00
1 回答

鴻蒙傳說
TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊
你可以重新解釋一下:
loc,_:=time.LoadLocation("America/Vancouver")
t2:=timeFromDb.In(loc)
_,off:=t2.Zone()
theTime:=t2.Add(-time.Duration(off)*time.Second)
您還可以進(jìn)行一些字符串操作,但我懷疑這更快。
- 1 回答
- 0 關(guān)注
- 115 瀏覽
添加回答
舉報
0/150
提交
取消