thymeleaf页面显示数据库时间快8小时解决方案

今天在做thymeleaf页面显示日期碰到了时间快8小时的问题

数据库中的字段是datetime类型
实体类的类型是date类型
在这里插入图片描述网页代码:

<td th:text="${#dates.format(dept.getUpdataTime(),'yyyy-MM-dd HH:mm:ss')}"></td>

此时你会发现尽管实体类和网页上用了日期格式化处理也不管用,显示结果快了8小时

在这里插入图片描述

后来发现项目里yml的jdbc配置时区用的是UTC

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver

解答一下:GMT是前世界标准时,UTC是现世界标准时,换句话来说:这个UTC不是国产的!所以会把我们数据库的“正常时间”换为“非国产时间”!
解决方案:
把jdbc里的url配置serverTimezone的属性值设置为东八区的Hongkong、Asia/Shanghai或者Asia/Hongkong
即为:

spring:
  datasource:
    username: root
    password: 123456
    #?serverTimezone=UTC解决时区的报错
    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver

ps:实体类上的@JsonFormat注解没有用,可以删掉

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

即为:

    /** 修改时间 */
    //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") //后端注解格式化日期
    private Date updataTime;

这个时候问题就解决了,可以正常显示时间了

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值