SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数

x33g5p2x  于2021-11-27 转载在 Spring  
字(1.0k)|赞(0)|评价(0)|浏览(607)

springboot1.x时,请求返回默认将Date类型转换成时间戳:

  1. createTime: 1544693261000

然而在升级到springboot2.0后,默认返回的时间格式变成了UTC字符串:

  1. createTime: "2021-12-13T09:27:41.000+0000"

对于网页端或安卓端,UTC这种格式是不需要更改之前的代码的。但是,对于某些特殊平台,会造成时间显示出现问题(比如IOS端)。

需要将时间格式改回时间戳。

在SpringBoot配置中文件中加上如下配置即可:

  1. spring:
  2. jackson:
  3. serialization:
  4. write-dates-as-timestamps: true

全局配置返回字符串

  1. spring:
  2. jackson:
  3. date-format: yyyy-MM-dd HH:mm:ss
  4. time-zone: GMT+8

springboot接收date类型参数

springboot接收日期类型参数,实现自动转换。

当请求类型为json,date类型字段为 json 字段时,可以使用如下两种方法

1.当前参数加两个注解

  1. @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  2. @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  3. private Date pageTime;

2.全局配置
application.properties文件添加

  1. spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
  2. spring.jackson.time-zone=GMT+8

还有一种:
参数改为String类型,在后端处理String到Date的转换,而不是交给SpringMVC来处理。

  1. private void convertProperties(UserDO user, String dateStr) throws Exception {
  2. if (StringUtils.isNotBlank(expireDateStr)) {
  3. user.setdate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateStr));
  4. }
  5. }

相关文章