在Spring 3.0中作为Formatter SPI的一部分引入的@DateTimeFormat
批注可用于解析和打印Web应用程序中的本地化字段值。 在Spring 4.0中, @DateTimeFormat
批注可以直接与Java 8 Date-Time API( java.time
)一起使用。
在Spring中,可以通过字段类型或注释来配置字段格式。 要将注释绑定到格式化程序,必须实现AnnotationFormatterFactory
。 Spring 4.0 Jsr310DateTimeFormatAnnotationFormatterFactory
了Jsr310DateTimeFormatAnnotationFormatterFactory
,该Jsr310DateTimeFormatAnnotationFormatterFactory
格式化了以@DateTimeFormat
注释的Java 8 Date-Time字段。 支持的字段类型如下:
-
java.util.LocalDate
-
java.util.LocalTime
-
java.util.LocalDateTime
-
java.util.ZonedDateTime
-
java.util.OffsetDateTime
-
java.util.OffsetTime
可以采用以下形式使用所有提到的类型:
public class DatesForm {@DateTimeFormat(iso = ISO.DATE)private LocalDate localDate;@DateTimeFormat(iso = ISO.TIME)private LocalTime localTime;@DateTimeFormat(iso = ISO.TIME)private OffsetTime offsetTime;@DateTimeFormat(iso = ISO.DATE_TIME)private LocalDateTime localDateTime;@DateTimeFormat(iso = ISO.DATE_TIME)private ZonedDateTime zonedDateTime;@DateTimeFormat(iso = ISO.DATE_TIME)private OffsetDateTime offsetDateTime;}
表单可以传递给视图,Spring会照顾字段的正确格式。
在类型字段上指定格式时: java.util.LocalDate
, java.util.LocalTime
, java.util.OffsetTime
您需要记住正确配置@DateTimeFormat
。
@DateTimeFormat
声明字段应设置为日期时间,并且因为java.util.LocalDate
表示日期,而其他两个表示时间–您将获得java.time.temporal.UnsupportedTemporalTypeException
(例如:不支持的字段:ClockHourOfAmPm,不支持字段:java.time.format.DateTimeFormatter抛出的java.time.format.DateTimeFormatter
。
翻译自: https://www.javacodegeeks.com/2014/06/spring-4-datetimeformat-with-java-8-date-time-api.html