代码里下毒之夏令时
項目場景:
產品是面對國際化的用戶,多個國家和地區使用,所以后端全使用UTC時間保存代碼(至少是這樣規劃)
問題描述
3月28號上班的時候,突然發現保存的UTC時間,在取出后都增長了一個小時。那部分代碼都沒動啊~
#明明都是這樣獲取的時間 var nowtime=DateTime.UtcNow;原因分析:
1.Dapper封裝的ORM問題:默認會讀數據庫服務端時區
2.數據庫時區設置錯誤:默認設置倫敦London時區
而雖然0時區在London,但倫敦時間有夏今時!!!!WTK。
在27號那天調快一個小時
解決方案:
orm:邏輯最好要改,不需要讀取設置的時區來修改時間類型的參數,而是給什么Value就用什么Value
數據庫時區誤區: 重新設置時區為UTC或GMT時間
另說明:
UTC:當前世界標準時間
GMT:前世界標準時間
總結
- 上一篇: 国内BIM案例VS国外BIM案例
- 下一篇: 关于MCU芯片提供的PWM接口