@JsonFormat(pattern=“yyyy-MM-dd“)时间差问题

举报
Java李杨勇 发表于 2022/07/31 20:29:14 2022/07/31
【摘要】 最近在做给一个同学做课程设计项目的时候,需要Java后端给前端页面返回时间、比如考试时间这种、前端用的vue+element时间选择器、(要用本地时间–北京时间),后端时间字段映射,转换,但数据传到后台就会比北京时间少8个小时。具体检查了下是因为时区的问题。但前端显示还是少8个小时,这样的话那肯定还是有问题的。可以利用@JsonFormat绑定到对象属性上解决问题。原因:@JsonForma...

最近在做给一个同学做课程设计项目的时候,需要Java后端给前端页面返回时间、比如考试时间这种、前端用的vue+element时间选择器、(要用本地时间–北京时间),后端时间字段映射,转换,但数据传到后台就会比北京时间少8个小时。具体检查了下是因为时区的问题。但前端显示还是少8个小时,这样的话那肯定还是有问题的。可以利用@JsonFormat绑定到对象属性上解决问题。

原因:@JsonFormat(pattern=“yyyy-MM-dd”)时间差问题

解释:默认情况下timeZone为GMT(即标准时区),而北京是在东八区,所以会造成差8小时。

解决方法:加上timezone = "GMT+8

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

2 也可以在Springboot application.yml中修改MySQL配置

druid:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/renren_students?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456

扩展知识:

注解@JsonFormat的使用

在项目maven引入@JsonFormat所需要的jar包。主要如下

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-annotations</artifactId>
   <version>2.8.8</version>
</dependency>

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.8.8</version>
</dependency>

<dependency>
   <groupId>org.codehaus.jackson</groupId>
   <artifactId>jackson-mapper-asl</artifactId>
   <version>1.9.13</version>
</dependency>

@JsonFormat注解是一个时间格式化注解,比如我们存储在mysql中的数据是date类型的,当我们读取出来封装在实体类中的时候,就会变成英文时间格式,而不是yyyy-MM-dd HH:mm:ss这样的中文时间,因此我们需要用到JsonFormat注解来格式化我们的时间。一般用于一个字段命名上面在对应的查询数据库对象字段对应的实体类的属性上添加@JsonFormat属性。//设置时区为上海时区,时间格式自己据需求定。比如:@JsonFormat(pattern=“yyyy-MM-dd”,timezone = “GMT+8”)。

​ 大家点赞、收藏、关注、评论啦 、

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。