@JsonFormat(pattern=“yyyy-MM-dd“)时间差问题
【摘要】 最近在做给一个同学做课程设计项目的时候,需要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)