Spring MVC 日期类型参数传递

535 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情

前言

前面我们学习了基本数据类型、引用数据类型、json类型数据的参数传递.这一篇文章来带大家来学会日期类型的数据传递。

日期类型参数传递

很多小伙伴可能会疑惑,为什么前面学了这么多种的数据类型参数传递还要来学一个日期类型的参数传递呢?日期类型不就是个字符串吗?有必要专门来讲日期类型的参数传递吗?其实,这是因为我们平常表达日期有多种不同的格式,为了方便,我们需要将不同的格式的日期类型转化成Spring MVC的统一格式。

常用的日期格式

1.yyyy/MM/dd

例如:2022/10/18

2.MM/dd/yyyy

例如:18/10/2022

3.yyyy-MM-dd

例如:2022-10-18

4.MM-dd-yyyy

例如:18-10-2022

我们常用的日期格式就是这几种。

日期类型参数传递

我们定义一个getDate()方法用来接收我们传递的日期类型的参数。

@ResponseBody
@RequestMapping("/getDate")
public String getDate(Date date){
    System.out.println(date);
    return "{info:get date}";
}

然后去Postman中发送一个带有yyyy/MM/dd格式的日期参数请求。

微信截图_20221018164445.png 然后我们来看服务器中打印的信息。

Tue Oct 18 00:00:00 CST 2022

这里我们成功的获取到了所传递的日期参数。

接下来我们试下另外几种的日期格式。

微信截图_20221018165002.png 这次传递的是MM/dd/yyyy格式的日期参数。

发送请求成功,我们来看下打印信息。

Wed Oct 19 00:00:00 CST 2022

这种格式也能成功的获取到正确的日期参数。

既然我们专门来讲这个日期格式的参数传递肯定不会是这么顺利的,接下来就有问题要来了。

我们这次用yyyy-MM-ddMM-dd-yyyy这两种日期格式来传递日期参数。

yyyy-MM-dd格式

微信截图_20221018165446.png

MM-dd-yyyy格式

微信截图_20221018165518.png

携带这两种参数发送请求都失败了。

我们来看看报错信息。

微信截图_20221018165850.png

这里报错信息是:“方法的参数类型不匹配。”这是因为Spring MVC无法识别这种格式的日期,不能做到自动转化这种格式的日期,就将这个日期当成了字符串类型进行处理,而我们用于接收参数的是Date类型所以就会报错。

这种情况很简单,我们只需要指定日期格式即可。

我们在接收参数前面加上@DateTimeFormat注解,该注解有个pattern的属性,pattern属性值设定为我们所传递的日期参数的格式即可。

@ResponseBody
@RequestMapping("/getDate")
public String getDate(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date){
    System.out.println(date);
    return "{info:get date}";
}

我们再次发送请求。

微信截图_20221018194914.png

查看打印信息。

Thu Oct 20 00:00:00 CST 2022

我们这样就成功的获取了日期参数。

MM-dd-yyyy格式的日期参数同理,只需要将pattern属性值设定为MM-dd-yyyy即可。

时间参数也是一样的,HH代表时,mm代表分钟,ss代表秒。

总结

时间参数并不是当作普通的字符串处理,我们在开发过程中要注意其多种格式的不同。这篇文章就讲解到这里,喜欢的小伙伴们多多支持。