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均能被接收到。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
Hadoop是什么? Hadoop是一个由Apache开发的开源分布式计算框架,它能够处理大规模数据并行处理任务,支持大规模数据存储和处理。Hadoop的核心组件包括分布式文件系统HDFS和分布式计算框架MapReduce,它们使得Hadoop可以在廉价的硬件…