springboot 時間戳和 數據庫時間相差12~13個小時


在 springboot 開發過程中遇到一個奇怪的問題,就是已經設置系統時間GMT+8, 但是時間到數據庫后會減少14個小時。后來發現是 jvm 時區和數據庫時區設置不一致的問題。

jvm 設置的是 GMT+8,數據庫是 CST 時區。CST 時區比較混亂,會在冬令時或夏令時導致相差 13 或 14 個小時,所以需要改成自己需要的。

spring 開發過程中時區設置

1 jvm 系統時區設置,在 application.yml 配置文件中

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

2 在請求參數中,使用 JsonFormat 配置解析規則

import com.fasterxml.jackson.annotation.JsonFormat;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date birthday;

3 在數據庫連接中設置時間的解析時區,該方法不需要 mysql 服務器設置時區然后重啟了

jdbc:mysql://localhost:3306/table_name?useUnicode=true&characterEncoding=UTF-8&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8

經過以上設置后請求時間戳和運行時時間戳和數據庫時間戳就一致了。

4 數據庫查看時區命令

show variables like '%time_zone%';

參考文獻

https://www.cnblogs.com/zhaopengcheng/p/12124973.html


免責聲明!

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



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