SpringBoot 統一時區 timezone


參考原文:https://www.cnblogs.com/chancy/p/9995562.html

思路為:
將數據庫和服務器的時間都采用標准時區UTC存儲處理。前端拿到標准時區的數據,統一根據用戶所在時區進行轉換。這樣保證了后端數據時區的一致性,前端根據實際情況進行渲染。

保證服務器時區為UTC

服務啟動的時候,將當前時區設置為UTC,代碼如下:

@SpringBootApplication
public class Application {
@PostConstruct
void started()
{ TimeZone.setDefault(TimeZone.getTimeZone(
"UTC")); //TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai")); //TimeZone.setDefault(TimeZone.getTimeZone("GMT+8")); }

public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

這樣就保證了Java程序的時區為UTC。

保證數據庫時區為UTC

Hibernate支持設置時區,在Springboot中增加配置如下:

spring.jpa.properties.hibernate.jdbc.time_zone = UTC

 

如果是MySQL數據庫,連接池鏈接后面增加配置如下:

?serverTimezone=TimeZone&useLegacyDatetimeCode=false

 

如:

spring.datasource.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=UTC

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM