在使用Spring MVC 时,前台传入的startTime String类型; 但是我们后台的 qo 的startTime 的类型是Date类型。

而Spring 不会自动给我们转换,就会报错 java.lang.String convert java.util.Date  java.lang.IllegalArgumentException。


当然解决办法有很多;

1,麻烦的方法

再声明字串 专门接收这些字段 后台再转换处理。

2.简单的办法

使用DateTimeFormat注解 配合joda-time使用

首次先POM.xml 引入 joda-time

<!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>1.3</version>
</dependency>


然后在你要po字段上添加此注解。

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;


然后就可以了。匹配前台传入的  “2016-7-13 12:23:59“ 字符串。

当然DateTimeFormat 本身也有很多格式

比如支持ISO enum,可以看源码了解更多。


比较喜欢使用pattern,定制性高。


当使用pattern时的一个坑。

hh 是12小时制 HH是24小时制。


附时间格式:


Symbol Meaning Presentation Examples ------ ------- ------------ ------- G era text AD C century of era (>=0) number 20 Y year of era (>=0) year 1996 x weekyear year 1996 w week of weekyear number 27 e day of week number 2 E day of week text Tuesday; Tue y year year 1996 D day of year number 189 M month of year month July; Jul; 07 d day of month number 10 a halfday of day text PM K hour of halfday (0~11) number 0 h clockhour of halfday (1~12) number 12 H hour of day (0~23) number 0 k clockhour of day (1~24) number 24 m minute of hour number 30 s second of minute number 55 S fraction of second millis 978 z time zone text Pacific Standard Time; PST Z time zone offset/id zone -0800; -08:00; America/Los_Angeles ' escape for text delimiter '' single quote literal '




​http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html​