简介
1、JsonFormat来源于jackson,Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少,简单易用并且性能也要相对高些,并且Jackson社区相对比较活跃,更新速度也比较快。
2、DateTimeFormat是spring自带的处理框架,主要用于将时间格式化。
@DateTimeFormat
使用@DateTimeFormat注解可以将一个字符串转成一个Date对象,主要用于入参日期格式转换。
该注解可以用在实体类中Date类型的字段上也可以使用在方法中。
原因:前端传日期数据是以字符串的形式传入后台。后端用Date类型接受就会出错,加上此注解,后台可解析字符串的日期时间格式。
示例代码
@Data
@EqualsAndHashCode(callSuper = true)
public class QueryOrderDTO {
/**
* 开始日期
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date start;
/**
* 结束日期
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date end;
}
@GetMapping("/test")
public R test(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date start) {
return new R();
}
@JsonFormat
当后台返回Date类型的日期格式数据给前端时,前台没办法解析。
需要做如下操作:在实体类字段打上如下注解
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
注意:
timezone
是为了解决时区问题,因为我们是东八区, 会相差8个小时。
示例代码
@Data
@EqualsAndHashCode(callSuper = true)
public class QueryOrderDTO {
/**
* 开始日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date start;
/**
* 结束日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date end;
}
注意:@JsonFormat与@DateTimeFormat两个注解可以同时使用