調試代碼中,肯定了new Date();
出來的時間數據是準確了,沒有出現差14小時狀況,經過Spring hibernate jdbc這一路保存到mysql數據庫中,就出現了14小時問題。html
# 查看mysql時區 mysql> SELECT @@global.time_zone, @@session.time_zone; +--------------------+---------------------+ | @@global.time_zone | @@session.time_zone | +--------------------+---------------------+ | SYSTEM | +08:00 | +--------------------+---------------------+ # 東八區,沒有問題的 # 主動查詢當前時間 mysql> select now(); +---------------------+ | now() | +---------------------+ | 2018-12-18 17:11:05 | +---------------------+ 1 row in set (0.00 sec) # 沒有問題,時間與當前時間是一致的。
到這裏,基本上排除了是mysql數據庫時區不對的問題,以前在代碼中debug,也沒有發現是代碼中的問題。到這裏,只有嘗試在jdbc中主動設置東八區。以前就出現過spring boot中jackson時間格式和東八區的設置問題,會不會spring的jdbc也是須要設置東八區類?mysql
只須要中添加&serverTimezone=GMT%2B8
設置jdbc時區爲東八區就能夠了,GMT+8
表示東八區,當jdbc只能認識GMT%2B8
寫法。例如:spring
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8