LocalDateTime兼容日期格式
  sjr1u1Lqr9Qx 2023年11月09日 7 0

LocalDateTime兼容日期格式

触发场景:在工作中要接收前端传递的时间类型的数据,我默认设置的是接收"yyyy-MM-dd HH:mm:ss"格式的数据,例如:“recordTime”:“2018-12-25 13:10:45”,但是因为我设置的格式原因,当前端传递的参数格式为"recordTime":"2018-12-3 13:10:45"时,则会报错。为了兼容两种日期格式,所以进行了一下探索,解决方案有两种。

**

方法一:新建一个类重写JsonDeserializer类的deserialize方法。下面直接上代码。

**

public class CustomDeserializer extends JsonDeserializer {

//兼容生长曲线纪录中前端可能会传递的recordTime格式为yyyy-MM-d HH:mm:ss的参数

public static final DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-d HH:mm:ss");

@Override

public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws RuntimeException {

try{

if(p !=null && StringUtils.isNotEmpty(p.getText())){

return LocalDateTime.parse(p.getText(),format);

}else{

return null;

}

}catch (Exception e){

System.out.println(e.getMessage());

throw new RuntimeException();

}

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

然后在实体类中使用该方法的解析字段set方法上面加上注解。

@JsonDeserialize(using = CustomDeserializer.class)

public void setRecordTime(LocalDateTime recordTime) {

this.recordTime = recordTime;

}

1

2

3

4

这样就可以成功解析"recordTime":"2018-12-3 13:10:45"这样格式的字段了。

**

方法二:在实体类上重写JsonFormat注解。

**

在实体类的时间字段上协商@JsonFormat注解。

@JsonFormat(pattern = "yyyy-M-d HH:mm:ss")

private LocalDateTime recordTime;

1

2

这样就可以解析月和日都是单数的情况,同时也兼容双数的情况。

如:2019-1-1和2019-01-01均能被接收到。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月09日 0

暂无评论

sjr1u1Lqr9Qx