@Documented @Retention(value=RUNTIME) @Target(value={METHOD,FIELD,PARAMETER,ANNOTATION_TYPE}) public @interface DateTimeFormat
Supports formatting by style pattern, ISO date time pattern, or custom format pattern string.
Can be applied to java.util.Date
, java.util.Calendar
, Long
(for
millisecond timestamps) as well as JSR-310 java.time
and Joda-Time value types.
For style-based formatting, set the style()
attribute to be the style pattern code.
The first character of the code is the date style, and the second character is the time style.
Specify a character of 'S' for short style, 'M' for medium, 'L' for long, and 'F' for full.
A date or time may be omitted by specifying the style character '-'.
For ISO-based formatting, set the iso()
attribute to be the desired DateTimeFormat.ISO
format,
such as DateTimeFormat.ISO.DATE
. For custom formatting, set the pattern()
attribute to be the
DateTime pattern, such as "yyyy/MM/dd hh:mm:ss a"
.
Each attribute is mutually exclusive, so only set one attribute per annotation instance (the one most convenient for your formatting needs).
iso()
attribute is specified, it takes precedence over the style attribute.DateTimeFormatter
,
DateTimeFormat
public abstract String style
Defaults to 'SS' for short date time. Set this attribute when you wish to format your field in accordance with a common style other than the default style.
public abstract DateTimeFormat.ISO iso
The possible ISO patterns are defined in the DateTimeFormat.ISO
enum.
Defaults to DateTimeFormat.ISO.NONE
, indicating this attribute should be ignored.
Set this attribute when you wish to format your field in accordance with an ISO format.
public abstract String pattern
Defaults to empty String, indicating no custom pattern String has been specified. Set this attribute when you wish to format your field in accordance with a custom date time pattern not represented by a style or ISO format.
Note: This pattern follows the original SimpleDateFormat
style,
as also supported by Joda-Time, with strict parsing semantics towards overflows
(e.g. rejecting a Feb 29 value for a non-leap-year). As a consequence, 'yy'
characters indicate a year in the traditional style, not a "year-of-era" as in the
DateTimeFormatter
specification (i.e. 'yy' turns into 'uu'
when going through that DateTimeFormatter
with strict resolution mode).