• 當前位置:首頁 > IT技術 > 數據庫 > 正文

    MongoDB數據日期顯示相差8小時 原因和解決方案
    2022-09-06 22:37:15


    文章目錄

    一、透過現象看本質
    1. 背景調研

    最近因為項目需要使用到了MongoDB,使用Navicat Premium 15 客戶端可視化工具查詢數據,可是問題來了,插入的數據在查看的時候顯示相差了8個小時,但是程序里是通過new Date() 來生成時間的,系統時間確認沒問題,經過多次測試發現程序調用得到的日期也沒有問題,那么只能是客戶端程序的顯示問題了。

    MongoDB數據日期顯示相差8小時 原因和解決方案_可視化工具

    • 正常時間為:
    2022-07-03 12:38:11
    • 實際落庫時間
    2022-07-03 04:38:11
    2. 原因分析

    時區差異:
    存儲在mongodb中的時間是標準時間UTC +0:00,而中國的時區是+8.00

    說明:UTC 即 Universal Time Coordinated,即0時區與東八區相差8小時。

    3. 影響評估

    1.數據庫查詢數據->顯示問題
    2.查詢數據不正確->頁面返回數據也少了8小時

    二、解決方案
    2.1. 客戶端顯示問題

    下載可視化工具Robo3T
    打開Robo3T;

    • 點擊Options -> display dates in…可以看到有2個選項:
    • 1.UTC(默認)
    • 2.Local TimeZone.
    • 選擇Local TimeZone,再次查看數據時間,發現已經正常。

    注:UTC 即 Universal Time Coordinated,即0時區與東八區相差8小時。

    2.2. 查詢數據不正確

    在返回的對象屬性上添加@JsonFormat注解和配置

    (locale = "zh", timezone = "Asia/Shanghai", pattern = "yyyy-MM-dd HH:mm:ss")
    @Field("createTime")
    private Date createTime;
    2.3. 效果驗證
    • 客戶端顯示問題
    • 前端接收報文
      返回時間屬性:createTime
    [{
    "id": "62c11d3435b7c4007a8e650e",
    "fromUserId": "21100598TZ9XG6RP",
    "fromNickname": "小美女",
    "fromFace": "http://gblfy.cn:9000/imooc/xh.jpg",
    "toUserId": "220620BZ2DH0KP94",
    "msgType": 1,
    "msgContent": {
    "isFriend": true
    },
    "createTime": "2022-07-03 12:38:11"
    },
    ...其他數據忽略
    ]
    • 正常時間為:
    2022-07-03 12:38:11

    測試結果:返回數據時間與正確落庫一致


    本文摘自 :https://blog.51cto.com/g

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码