springboot項目如何設(shè)置時區(qū)
springboot項目設(shè)置時區(qū)
在springboot啟動類里添加如下代碼:
? ? @PostConstruct
? ?void setDefaultTimezone() {
? ? ? TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
// ? ?TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
? ?}用任何一個都行,將默認時區(qū)設(shè)置為東八區(qū)。
應(yīng)用場景
有時候應(yīng)用服務(wù)器的時間是UTC協(xié)調(diào)世界時間,在我們用瀏覽器訪問的時候,就會出現(xiàn)日期快八小時,
因為服務(wù)器的時區(qū)跟我們東八區(qū)差八個小時導(dǎo)致的,用以上方法可以解決這個問題。
springboot統(tǒng)一時區(qū)的方案
UTC時間是什么
- 協(xié)調(diào)世界時,又稱世界統(tǒng)一時間、世界標(biāo)準(zhǔn)時間、國際協(xié)調(diào)時間。
- 由于英文(CUT)和法文(TUC)的縮寫不同,作為妥協(xié),簡稱UTC。
UTC +時區(qū)差=本地時間
中國時間
- 中國大陸、中國香港、中國澳門、中國臺灣、蒙古國、新加坡、
- 馬來西亞、菲律賓、西澳大利亞州的時間與UTC的時差均為+8,也就是UTC+8。
1.系統(tǒng)采用多時區(qū)設(shè)計的時候,往往我們需要統(tǒng)一時區(qū),需要統(tǒng)一的地方如下:
- 服務(wù)器(Tomcat服務(wù))
- 數(shù)據(jù)庫(JPA + Hibernate)
- 前端數(shù)據(jù)(前端采用Vuejs)
思路為:
- 將數(shù)據(jù)庫和服務(wù)器的時間都采用標(biāo)準(zhǔn)時區(qū)UTC存儲處理。
- 前端拿到標(biāo)準(zhǔn)時區(qū)的數(shù)據(jù),統(tǒng)一根據(jù)用戶所在時區(qū)進行轉(zhuǎn)換。
- 這樣保證了后端數(shù)據(jù)時區(qū)的一致性,前端根據(jù)實際情況進行渲染。
2.保證服務(wù)器時區(qū)為UTC
服務(wù)啟動的時候,將當(dāng)前時區(qū)設(shè)置為UTC,代碼如下:
@SpringBootApplication
? ? public class Application {
? ? ? @PostConstruct
? ? ? void started() {
? ? ? ? TimeZone.setDefault(TimeZone.getTimeZone("UTC"));3.保證數(shù)據(jù)庫時區(qū)為UTC
Hibernate支持設(shè)置時區(qū),在Springboot中增加配置如下:
spring.jpa.properties.hibernate.jdbc.time_zone = UTC
如果是MySQL數(shù)據(jù)庫,連接池鏈接后面增加配置如下:
?serverTimezone=TimeZone&useLegacyDatetimeCode=false
如:
spring.datasource.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=UTC
其中useLegacyDatetimeCode參數(shù)默認是true,我們需要手動設(shè)置為false,否則無效。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- 深入詳解SpringBoot中時區(qū)問題解決與配置方案
- SpringBoot時區(qū)問題解決以及徹底解決時差問題
- 如何解決springboot數(shù)據(jù)庫查詢時出現(xiàn)的時區(qū)差異問題
- SpringBoot如何根據(jù)用戶系統(tǒng)時區(qū)動態(tài)展示時間
- springboot如何統(tǒng)一設(shè)置時區(qū)
- SpringBoot中?Jackson?日期的時區(qū)和日期格式問題解決
- SpringBoot:JPA + AuditingEntityListener時區(qū)設(shè)置方式
- 關(guān)于SpringBoot mysql數(shù)據(jù)庫時區(qū)問題
- SpringBoot時區(qū)設(shè)置的幾個方面小結(jié)
相關(guān)文章
淺談java實現(xiàn)redis的發(fā)布訂閱(簡單易懂)
本篇文章主要介紹了淺談java實現(xiàn) redis的發(fā)布訂閱(簡單易懂),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
java中判斷字符串?dāng)?shù)組是否包含特定字符串的三種方法實現(xiàn)與對比
這篇文章主要為大家詳細介紹了java中判斷字符串?dāng)?shù)組是否包含特定字符串的三種方法實現(xiàn)與對比,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2025-12-12
SpringBoot3.x版本與Mybatis-Plus不兼容問題
當(dāng)使用3.x版本的SpringBoot結(jié)合Mybatis-Plus時版本不兼容就會報錯,本文就來介紹一下這個問題的解決方法,感興趣的可以了解一下2024-03-03
基于Retrofit+Rxjava實現(xiàn)帶進度顯示的下載文件
這篇文章主要為大家詳細介紹了基于Retrofit+Rxjava實現(xiàn)帶進度顯示的下載文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Java 創(chuàng)建并應(yīng)用PPT幻燈片母版的方法示例
幻燈片母版可供用戶設(shè)置幻燈片的樣式,本文將介紹如何用Java創(chuàng)建并應(yīng)用單個或多個幻燈片母版。感興趣可以了解一下2020-06-06

