Package org.springframework.format.datetime

# Class DateFormatter

java.lang.Object
org.springframework.format.datetime.DateFormatter

All Implemented Interfaces:
  `Formatter<Date>`, `Parser<Date>`, `Printer<Date>`

public class DateFormatter extends Object implements Formatter<Date>
A formatter for `Date` types.

Supports the configuration of an explicit date time pattern, timezone, locale, and fallback date time patterns for lenient parsing.

Common ISO patterns for UTC instants are applied at millisecond precision. Note that `InstantFormatter` is recommended for flexible UTC parsing into a `Instant` instead.

Since:
  3.0
Author:
  Keith Donald, Juergen Hoeller, Phillip Webb, Sam Brannen
See Also:
  - `SimpleDateFormat`

## Constructor Summary

Constructors
Constructor
Description
`DateFormatter()`
Create a new default `DateFormatter`.
`DateFormatter(String pattern)`
Create a new `DateFormatter` for the given date time pattern.

## Method Summary

Modifier and Type
Method
Description
`protected DateFormat`
`getDateFormat(Locale locale)`
`Date`
`parse(String text, Locale locale)`
Parse a text String to produce a T.
`String`
`print(Date date, Locale locale)`
Print the object of type T for display.
`void`
`setFallbackPatterns(String... fallbackPatterns)`
Set additional patterns to use as a fallback in case parsing fails for the configured pattern, ISO format, style, or style pattern.
`void`
`setIso(DateTimeFormat.ISO iso)`
Set the ISO format to use to format date values.
`void`
`setLenient(boolean lenient)`
Specify whether parsing is to be lenient.
`void`
`setPattern(String pattern)`
Set the pattern to use to format date values.
`void`
`setSource(Object source)`
Set the source of the configuration for this `DateFormatter` — for example, an instance of the `@DateTimeFormat` annotation if such an annotation was used to configure this `DateFormatter`.
`void`
`setStyle(int style)`
Set the `DateFormat` style to use to format date values.
`void`
`setStylePattern(String stylePattern)`
Set the two characters to use to format date values.
`void`
`setTimeZone(TimeZone timeZone)`
Set the `TimeZone` to normalize the date values into, if any.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### DateFormatter

public DateFormatter()
Create a new default `DateFormatter`.

### DateFormatter

public DateFormatter(String pattern)
Create a new `DateFormatter` for the given date time pattern.

## Method Details

### setSource

public void setSource(Object source)
Set the source of the configuration for this `DateFormatter` — for example, an instance of the `@DateTimeFormat` annotation if such an annotation was used to configure this `DateFormatter`.

The supplied source object will only be used for descriptive purposes by invoking its `toString()` method — for example, when generating an exception message to provide further context.

Parameters:
  `source` - the source of the configuration
Since:
  5.3.5

### setPattern

public void setPattern(String pattern)
Set the pattern to use to format date values.

If not specified, DateFormat's default style will be used.

### setFallbackPatterns

public void setFallbackPatterns(String... fallbackPatterns)
Set additional patterns to use as a fallback in case parsing fails for the configured pattern, ISO format, style, or style pattern.

Parameters:
  `fallbackPatterns` - the fallback parsing patterns
Since:
  5.3.5
See Also:
  - `DateTimeFormat.fallbackPatterns()`

### setIso

public void setIso(DateTimeFormat.ISO iso)
Set the ISO format to use to format date values.

Parameters:
  `iso` - the `DateTimeFormat.ISO` format
Since:
  3.2

### setStyle

public void setStyle(int style)
Set the `DateFormat` style to use to format date values.

If not specified, DateFormat's default style will be used.

See Also:
  - `DateFormat.DEFAULT`
  - `DateFormat.SHORT`
  - `DateFormat.MEDIUM`
  - `DateFormat.LONG`
  - `DateFormat.FULL`

### setStylePattern

public void setStylePattern(String stylePattern)
Set the two characters to use to format date values.

The first character is used for the date style; the second is used for the time style.

Supported characters:

- 'S' = Small
- 'M' = Medium
- 'L' = Long
- 'F' = Full
- '-' = Omitted

Parameters:
  `stylePattern` - two characters from the set {"S", "M", "L", "F", "-"}
Since:
  3.2

### setTimeZone

public void setTimeZone(TimeZone timeZone)
Set the `TimeZone` to normalize the date values into, if any.

### setLenient

public void setLenient(boolean lenient)
Specify whether parsing is to be lenient. Default is `false`.

With lenient parsing, the parser may allow inputs that do not precisely match the format. With strict parsing, inputs must match the format exactly.

### print

public String print(Date date, Locale locale)
Description copied from interface: `Printer`
Print the object of type T for display.

Specified by:
  `print` in interface `Printer<Date>`
Parameters:
  `date` - the instance to print
  `locale` - the current user locale
Returns:
  the printed text string

### parse

public Date parse(String text, Locale locale) throws ParseException
Description copied from interface: `Parser`
Parse a text String to produce a T.

Specified by:
  `parse` in interface `Parser<Date>`
Parameters:
  `text` - the text string
  `locale` - the current user locale
Returns:
  an instance of T
Throws:
  `ParseException` - when a parse exception occurs in a java.text parsing library

### getDateFormat

protected DateFormat getDateFormat(Locale locale)