后端承接前端的时间
String
Date 这里就可以用DateTimeFormat 注解
LocalDateTime JsonFormat 注解
JsonFormat
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
private LocalDateTime gmtModified;
JsonFormat 可以处理前端传递过来的对象也可以处理后端返回到前端的对象
前端返回给后端的对象 DTO
/**
* 发送时间
* */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private String sendTime;
DateTimeFormat 是用来处理Date 的注解
解决方案1
全程用Date
承接就是DateFormat
返回就jackson 的JsonFormat
解决方案2
字符串承接 存入数据库之前重写set 方法
返回时 重写get 方法
getBirthday() {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
return birthday.format(dateTimeFormatter);
}
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate local = LocalDate.parse("2019-02-03",dateTimeFormatter);
System.out.println(local);
解决方案3
全程用LocalDateTime 两个注解可以实现生效传递
只能在get 请求用
解决方案4 推荐
post RequestBody 不需要序列化 fastjson
@JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8",shape = JsonFormat.Shape.STRING)
private LocalDateTime birthDate;
异常 JSON parse error: Cannot deserialize value of type java.time.LocalDateTime
注意: 两个pattern 都要一样 否则报错
- 不在注解 postman post 请求 会报参数解析错误
参考文档
为什么使用LocalDate、LocalTime、LocalDateTime而不是Dateajax请求后端,日期时间数据直接自动封装进自定义对象DateTime.ToString() Patterns