使用 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;

二、将 12:25:30 转换成 LocalTime;

三、将 2020-01-29 12:25:30 转换成 LocalDateTime。

 1 @RestController
2 @RequestMapping("/test")
3 public class TestController {
4
5 @GetMapping("/date")
6 public LocalDate showDate(@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date) {
7 return date;
8 }
9
10 @GetMapping("/time")
11 public LocalTime showTime(@RequestParam @DateTimeFormat(pattern = "HH:mm:ss") LocalTime time) {
12 return time;
13 }
14 @GetMapping("/dateTime")
15 public LocalDateTime showDateTime(@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime dateTime) {
16 return dateTime;
17 }
18 }

第 1 个方法中的使用的是 iso = DateTimeFormat.ISO.DATE,第 3 个方法中使用的是 pattern = "yyyy-MM-dd HH:mm:ss"。因为第 1 个方法接收的日期字符串符合 ISO 的日期格式 yyyy-MM-dd,所以直接使用使用 DateTimeFormat.ISO 枚举类中定义好的日期格式。第 3 个方法接收的日期时间字符串不符合 ISO 的日期时间格式 yyyy-MM-dd'T'HH:mm:ss.SSSXXX,所以使用 pattern 指定自定义的日期时间格式。第 2 个方法与第 3 个方法原理相同。

对于任何日期时间格式均可使用 pattern 来指定,所以第 1 个方法中也可以使用 pattern = "yyyy-MM-dd" 指定。

最新文章

  1. A*寻路算法
  2. Ubuntu 16.04 软件中心闪退 解决方案
  3. MyBatis 环境搭建 (一)
  4. HDU1150 Machine Schedule
  5. JS中级 - 01:DOM节点
  6. '/test.txt'; // 把抓取的代码写入该文件
  7. Python之路【第十九篇】:爬虫
  8. 用yo命令创建项目
  9. Spark on Yarn
  10. 关于显示gif的一些方法与讨论
  11. javabean以及内省技术详解(转)
  12. 论文摘抄 - FlumeJava
  13. 使用 MyEclipse远程调试 Java 应用程序
  14. abstract和interface
  15. jemter分布式部署及linux下分布式脚本执行
  16. hadoop 2.5 安装部署
  17. python 使用多线程进行并发编程/互斥锁的使用
  18. 安装ArcGIS Enterprise WebGIS (Portal ArcGIS Server DataStore ) 系统后如何应对网络环境的配置修改
  19. Bi-shoe and Phi-shoe(欧拉函数/素筛)题解
  20. 【springmvc+mybatis项目实战】杰信商贸-2.数据库配置

热门文章

  1. HBuilder云端打包+个推
  2. JS复习之深浅拷贝
  3. 【Tomcat 源码系列】源码构建 Tomcat
  4. Spring框架之jms源码完全解析
  5. go并发之goroutine和channel,并发控制入门篇
  6. 04-flask-模版基础
  7. Java及Javascript中的浮点运算
  8. 如何修改openstack虚拟机密码
  9. Python 炫技操作:安装包的八种方法,你知道吗?
  10. MATLAB绘图,绘双坐标轴,绘一图二轴等