如何解決springboot數(shù)據(jù)庫(kù)查詢時(shí)出現(xiàn)的時(shí)區(qū)差異問(wèn)題
springboot數(shù)據(jù)庫(kù)查詢時(shí)出現(xiàn)的時(shí)區(qū)差異
最近項(xiàng)目中使用到多數(shù)據(jù)源將MySQL庫(kù)中的數(shù)據(jù)遷移到mongo庫(kù)中,發(fā)現(xiàn)取出后的數(shù)據(jù)與原數(shù)據(jù)時(shí)間上會(huì)出現(xiàn)8小時(shí)的相差,
最后度娘后終于解決問(wèn)題,記錄一下:
網(wǎng)上看到了兩種比較實(shí)用的方法,因?yàn)槭褂玫膕pringboot原因,所以我這里使用的是在配置文件application.yml中進(jìn)行修改,另外其他方法網(wǎng)上都可以搜到,
1.在連接數(shù)據(jù)庫(kù)的配置上我們添加一項(xiàng)
&serverTimezone=GMT%2b8
?primary: ? ? ? jdbc-url: jdbc:mysql://******:3306/***?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8 ? ? ? username: **** ? ? ? password: ***** ? ? secondary: ? ? ? jdbc-url: jdbc:mysql://*******:3306/***?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8 ? ? ? username: ***** ? ? ? password: ********
原格式應(yīng)該是這樣的:
&serverTimezone=GMT+8 這里使用%2b替換 + 號(hào)
2.直接在boot配置文件中增加jackson配置
#在application.yml中增加配置 spring: ? ? jackson: ? ? ? ? time-zone: GMT+8
這樣就可以成功將時(shí)間修改成功了,還有其他方法,大家可以查閱哦
springboot new Date()時(shí)區(qū)差8小時(shí)
1 在k8s環(huán)境中,在代碼中比較時(shí)間。new Date() 下相差8小時(shí)
檢查宿主機(jī) 時(shí)區(qū)是 cst時(shí)區(qū)
用java代碼寫(xiě)出controller時(shí)區(qū)發(fā)現(xiàn)是GMT
代碼如下:
Calendar calendar = Calendar.getInstance(); ? ? ? ? ? ? ? System.out.println("目前時(shí)間:" + calendar.getTime()); ? ? ? ? System.out.println("Calendar時(shí)區(qū)::" + calendar.getTimeZone().getID()); ? ? ? ? System.out.println("user.timezone:" + System.getProperty("user.timezone")); ? ? ? ? System.out.println("user.country:" + System.getProperty("user.country")); ? ? ? ? System.out.println("默認(rèn)時(shí)區(qū):" + TimeZone.getDefault().getID());
輸出時(shí)區(qū)是 GMT 跟宿主機(jī)還不一樣,搞不定運(yùn)維,自己搞把
看來(lái)還是時(shí)區(qū)搞的鬼-
1、數(shù)據(jù)庫(kù)鏈接db添加參數(shù) serverTimezone=Asia/Shanghai
2、springboot啟動(dòng)腳本添加 -Duser.timezone=GMT+08
3、jackson 全局配置
spring.jackson.date-format: yyyy-MM-dd HH:mm:ss spring.jackson.time-zone: GMT+8
4、jackson 注解
@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的LinkedHashMap及LRU緩存機(jī)制詳解
這篇文章主要介紹了Java中的LinkedHashMap及LRU緩存機(jī)制詳解,LinkedHashMap繼承自HashMap,它的多種操作都是建立在HashMap操作的基礎(chǔ)上的,同HashMap不同的是,LinkedHashMap維護(hù)了一個(gè)Entry的雙向鏈表,保證了插入的Entry中的順序,需要的朋友可以參考下2023-09-09RocketMQ根據(jù)Tag進(jìn)行消息過(guò)濾
消費(fèi)者訂閱了某個(gè)主題后,Apache RocketMQ 會(huì)將該主題中的所有消息投遞給消費(fèi)者。若消費(fèi)者只需要關(guān)注部分消息,可通過(guò)設(shè)置過(guò)濾條件在 Apache RocketMQ 服務(wù)端進(jìn)行過(guò)濾,只獲取到需要關(guān)注的消息子集,避免接收到大量無(wú)效的消息2023-02-02詳解java中的PropertyChangeSupport與PropertyChangeListener
這篇文章主要介紹了詳解java中的PropertyChangeSupport與PropertyChangeListener的相關(guān)資料,需要的朋友可以參考下2017-09-09java.net.ConnectException異常的正確解決方法(親測(cè)有效!)
java.net.ConnectException異常是與網(wǎng)絡(luò)相關(guān)的最常見(jiàn)的Java異常之一,建立從客戶端應(yīng)用程序到服務(wù)器的TCP連接時(shí),我們可能會(huì)遇到它,這篇文章主要給大家介紹了關(guān)于java.net.ConnectException異常的正確解決方法,需要的朋友可以參考下2024-01-01解決@PathVariable對(duì)于特殊字符截?cái)嗟膯?wèn)題
這篇文章主要介紹了解決@PathVariable對(duì)于特殊字符截?cái)嗟膯?wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02Java獲取項(xiàng)目路徑方式System.getProperty(“user.dir“)
這篇文章主要介紹了Java獲取項(xiàng)目路徑方式System.getProperty(“user.dir“),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12