首先要確定的是,我們在日常開發中,使用的都是東八區的時間。
在將應用部署到docker容器內時,發現docker容器內的應用日誌時間和實際時間相差8小時,導致考勤定時計算的時間本應在晚上0點,卻延遲到了實際早上8點。
網上找了很多方法,就不贅述了。下面是解決方法和一些思考。
在啓動類增加
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
然後發現Date、LocalDateTime是正常的,DateTime以及應用自身的輸出日誌依舊是UTC時間。
在Dockerfile的java啓動參數中 增加
"-Duser.timezone=GMT+8"
發現所有日誌的輸出時間,以及獲取時間都正常了。
------------------------------------------------------------------------------
可能默認需要設置一個時區,不然就使用默認的UTC時間了。