标签:object ram 需要 结合 定义 tin 日期格 request mapping
使用 Spring MVC 时,很多业务场景下 Controller 需要接收日期时间参数。一个简单的做法是使用 String 接收日期时间字符串(例如:2020-01-29),然后在代码中将其转换成 Java 8 的日期时间类型或 java.util.Date 类型。这种方法虽然简单,但是当有多个 Controller 接收日期参数时,这种方法就显得有些繁琐了。
另一个做法是使用以下两个 Spring 提供的注解,可以很好地满足上述需求。
org.springframework.web.bind.annotation.RequestParam
org.springframework.format.annotation.DateTimeFormat
RequestParam 比较常见,用于标注 Controller 中方法的参数;DateTimeFormat 用于声明一个对象属性或者方法参数会被格式化为日期或时间。两个注解结合使用时,Spring 会调用 FormattingConversionService.convert(Object, TypeDescriptor, TypeDescriptor) 将日期时间字符串转换成日期时间类型。
示例如下:
一、将 2020-01-29 转换成 LocalDate;
二、将 2020-01-29 12:25:30 转换成 LocalDateTime。
@RestController @RequestMapping("/test") public class TestController { @GetMapping("/date") public LocalDate showDate(@RequestParam("date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date) { return date; } @GetMapping("/dateTime") public LocalDateTime showDateTime( @RequestParam("dateTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime dateTime) { return dateTime; } }
需要注意的是,两个方法中注解 DateTimeFormat 的属性不一样。第 1 个方法中的使用的是 iso = DateTimeFormat.ISO.DATE,第 2 个方法中使用的是 pattern = "yyyy-MM-dd HH:mm:ss"。因为第 1 个方法接收的日期字符串符合 ISO 的日期格式 yyyy-MM-dd,所以直接使用使用 DateTimeFormat.ISO 枚举类中定义好的日期格式。第 2 个方法接收的日期时间字符串不符合 ISO 的日期时间格式 yyyy-MM-dd‘T‘HH:mm:ss.SSSXXX,所以使用 pattern 指定自定义的日期时间格式。对于任何日期时间格式均可使用 pattern 来指定,所以第 1 个方法中也可以使用 pattern = "yyyy-MM-dd" 指定。
Spring MVC 接收 LocalDate、LocalTime 和 LocalDateTime Java 8 时间类型参数
标签:object ram 需要 结合 定义 tin 日期格 request mapping
原文地址:https://www.cnblogs.com/qifenghao/p/12240943.html