背景:
攔截件監控時,對於簽收的數據需要比較簽收時間和實際同步數據的時間來判斷 同步時間是在簽收前還是簽收后。在比較時,用到同步時間syncTime和signTime, signTime從Q9查單獲取,為 local time,syncTime 在 mongodb 中查出,為 UtcTime。
問題:
在 utc time 和 local time 比較時,不會帶着時區比較,如圖
導致監控數據比較時,判斷差了8h。大部分數據都是下發時間在簽收后的,但是被判斷成在簽收前, 發現該問題是通過跟着幾條同步時間在簽收前的單號進行逐條查單才發現。
解決:
在比較時,一定要都轉成 utc time 再進行比較。
總結:
- 在這種時間比較時,一定要注意時區統一
2. mongodb在存儲時,會將local time默認轉成 utc time 存儲
3. mongodb在存儲時,會將utc time 直接存儲
4. mongodb在取數據時,直接取出utc time