springboot日期比数据库快了14个小时

springboot项目中生成的时间和MySQL中存储的时间不一致的问题,可能是时区造成的。
在application.properties文件中的spring.datasource.url最后面加上serverTimezone=Asia/Shanghai即可,指定是上海时区。

### Spring Boot 应用中的时区配置 对于Spring Boot应用程序中遇到的时间显示偏差问题,通常是因为服务器默认使用的UTC时间与期望的本地时间存在差异。为了确保应用能够正确处理并展示当地时间,可以采取多种方法来设置和调整时区。 #### 方法一:通过`application.properties`文件设定全局时区 在项目的资源目录下的`application.properties`或`application.yml`文件里指定Java虚拟机(JVM)级别的时区属性: ```properties spring.jackson.time-zone=Asia/Shanghai spring.datasource.hikari.data-source-properties.serverTimezone=Asia/Shanghai ``` 上述配置使得Jackson序列化/反序列化的操作以及数据库连接都遵循所定义的时区[^1]。 #### 方法二:编程方式修改JVM参数启动选项 如果无法直接编辑部署环境变量,则可以在运行命令中加入如下参数以改变整个程序执行期间的有效时区: ```bash -Duser.timezone=GMT+8 ``` 此做法适用于大多数情况下需要速修正生产环境中存在的即时性问题。 #### 方法三:针对特定日期对象进行转换 当仅需局部调整某些字段而非影响整体项目行为时,在代码内部手动完成Date到LocalDateTime类型的转变可能是更好的选择之一: ```java import java.time.LocalDateTime; import java.time.ZoneId; // 将 Date 转换为 LocalDateTime 并指定期望的 ZoneId public static String formatToLocalDateTime(Date date){ Instant instant = date.toInstant(); ZonedDateTime zdt = instant.atZone(ZoneId.of("Asia/Shanghai")); return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(zdt); } ``` 这种方法允许开发者灵活控制哪些地方应该按照自定义规则呈现给前端用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值