前后端教你如何正确使用@DateTimeFormat与@JsonFormat
目录
在Java Web开发中,日期和时间的处理是一个常见的需求。Spring框架和Jackson库提供了@DateTimeFormat和@JsonFormat两个注解来帮助我们更好地处理日期和时间。然而,这两个注解在使用上有一些差异,下面我们将详细介绍这两个注解的使用场景和区别。
一、@DateTimeFormat
@DateTimeFormat是Spring框架提供的注解,主要用于处理表单数据绑定时的日期时间格式问题。当你在前端页面通过表单提交一个日期或时间字段时,Spring会自动将这个字段转换为Java中的Date或LocalDateTime对象。但是,由于不同的浏览器或用户可能使用不同的日期时间格式,因此需要一个统一的规则来解析这些日期时间字符串。这就是@DateTimeFormat注解的作用。
使用场景:
在Controller层接收前端传来的日期时间字符串,并将其转换为Java中的日期时间对象。
示例:
Controller层:
@GetMapping("/list")
public Result selectPlanWork(@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate startDate,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate endDate) {
ListPlanWorkVO listPlanWorkVO = planWorkServiceImp.selectList(startDate, endDate);
return Result.success(listPlanWorkVO);
}
测试:

调试;

在这个例子中,通过knife4j接口文档测试,用户通过前端表单提交一个符合"yyyy-MM-dd"格式的日期时间字符串时,Spring会根据你提供的格式自动将这个字符串转换为LocalDate对象,并传递给selectPlanWork方法的startDate和endDate参数。
二、@JsonFormat
@JsonFormat是Jackson库提供的注解,主要用于处理JSON序列化和反序列化时的日期时间格式问题。当我们将Java对象转换为JSON字符串(序列化)或将JSON字符串转换为Java对象(反序列化)时,日期时间字段的格式可能需要特殊处理。@JsonFormat注解可以帮助我们定义这些规则。
使用场景:
在与前端交互时,将Java对象转换为JSON字符串,或将JSON字符串转换为Java对象。
示例:
实体类中的封装:
详细可参考: https://mp.csdn.net/mp_blog/creation/editor/140241914