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:
  • 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:
    • 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:
    • 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)