我有兩個時間實例。have我從數據庫和Now()時間中獲取。一旦我想用 比較它們After,結果就不是我所期望的。實例如下:// have => 2022-01-09 09:09:59 +0000 +0000// now => 2022-01-09 11:57:08.990265878 +0300 +0300 m=+4.977355713 if now.After(have) { // ...}我期望true上述條件的結果,而它返回false。為了更好地解決這個問題,我將它們轉換為 Unix 時間,Unix()令人驚訝的是,它的值have略大于now,這就是條件返回的原因false。顯然now是 afterhave但它的 Unix 時間小于have. 由于我想知道此案,請您告訴我我錯在哪里?更新 問題與時區有關。我沒有注意到它。所以我添加了以下代碼:loc, _ := time.LoadLocation("Local") have = have.In(loc)然后一旦我打印出來,它是這樣的:have => 2022-01-09 12:09:59 +0300 +0300這就是條件返回錯誤的原因。
1 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
這兩個時間位于不同的時區:have
在 UTC 中,now
在+0300
. now
因此,在將其與其他時間進行比較之前,您必須從值的日期/時間部分中減去 3 小時。
- 1 回答
- 0 關注
- 163 瀏覽
添加回答
舉報
0/150
提交
取消