一、问题描述
1.环境
- Spring Data Jpa
- Postgresql数据库
- 数据库时间字段设置类型为 TimeStamp
- Postgresql对应 java实体类型是Date
2.问题
- new Date()向数据库新增数据时少8小时
二、解决方案
- 检查jvm运行是否加时区,若没有设置东八时区 -Duser.timezone=GMT+8
- 检查PG数据库时区是否正确和当前时间比对
- jpa加上时区配置
spring.jpa.properties.hibernate.jdbc.time_zone=Asia/Shanghai
三、注意
如果使用K8s部署 注意编写dockerfile配置设置时区(Asia/Shanghai),因为centos默认utc,本地cst(+8时区,上海时间),相差8小时。