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)一時間、世界標準時間、國際協(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ù)器的時間都采用標準時區(qū)UTC存儲處理。
- 前端拿到標準時區(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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?多數(shù)據(jù)源方法級別注解實現(xiàn)過程
多數(shù)據(jù)源管理是Spring框架中非常重要的一部分,它可以提高應(yīng)用程序的靈活性和可靠性,從而更好地滿足業(yè)務(wù)需求,這篇文章主要介紹了Spring?多數(shù)據(jù)源方法級別注解實現(xiàn),需要的朋友可以參考下2023-07-07Java中JMM與volatile關(guān)鍵字的學(xué)習(xí)
這篇文章主要介紹了通過實例解析JMM和Volatile關(guān)鍵字的學(xué)習(xí),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2021-09-09SpringMVC框架中使用Filter實現(xiàn)請求日志打印方式
這篇文章主要介紹了SpringMVC框架中使用Filter實現(xiàn)請求日志打印方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10Spring mvc工作原理_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細介紹了Spring mvc工作原理的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08SpringBoot使用攔截器Interceptor實現(xiàn)統(tǒng)一角色權(quán)限校驗
角色權(quán)限校驗,是保證接口安全必備的能力:有權(quán)限才可以操作,所以,一般對于這種通用邏輯,推薦不與主業(yè)務(wù)邏輯耦合,那么怎么來解耦,那么本文小編就給大家詳細講解如何使用攔截器Interceptor實現(xiàn)統(tǒng)一角色權(quán)限校驗,需要的朋友可以參考下2023-07-07SpringBoot結(jié)合JSR303對前端數(shù)據(jù)進行校驗的示例代碼
這篇文章主要介紹了SpringBoot結(jié)合JSR303對前端數(shù)據(jù)進行校驗的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09