Class StdDateFormat

  • All Implemented Interfaces:
    Serializable, Cloneable

    public class StdDateFormat
    extends DateFormat
    Jackson's internal DateFormat implementation used by standard Date serializers and deserializers to implement default behavior: does NOT fully implement all aspects expected by DateFormat and as a consequence SHOULD NOT to be used by code outside core Jackson databind functionality. In particular, ParsePosition argument of parse(String, ParsePosition) and format(Date, StringBuffer, FieldPosition) methods is fully ignored; Jackson itself never calls these methods.

    For serialization defaults to using an ISO-8601 compliant format (format String "yyyy-MM-dd'T'HH:mm:ss.SSSZ") and for deserialization, both ISO-8601 and RFC-1123.
    Note that `Z` in format String refers to ISO-8601 time offset notation which produces values like "-08:00" -- that is, full minute/hour combo without colon, and not using `Z` as alias for "+00:00". Inclusion of colon as separator, as default setting, started in Jackson 2.11: prior versions omitted it. Note that it is possible to enable/disable use of colon in time offset by using method withColonInTimeZone(boolean) for creating new differently configured format instance, and configuring ObjectMapper with it.

    TODO: in Jackson 2.14 or later, should change behavior to fail if ParsePosition is specified by caller (at least with non-0 offset).

    See Also:
    Serialized Form
    • Field Detail

      • DATE_FORMAT_STR_ISO8601

        public static final String DATE_FORMAT_STR_ISO8601
        Defines a commonly used date format that conforms to ISO-8601 date formatting standard, when it includes basic undecorated timezone definition.
        See Also:
        Constant Field Values
      • instance

        public static final StdDateFormat instance
        A singleton instance can be used for cloning purposes, as a blueprint of sorts.
    • Constructor Detail

      • StdDateFormat

        public StdDateFormat()
    • Method Detail

      • getDefaultTimeZone

        public static TimeZone getDefaultTimeZone()
      • withTimeZone

        public StdDateFormat withTimeZone​(TimeZone tz)
        Method used for creating a new instance with specified timezone; if no timezone specified, defaults to the default timezone (UTC).
      • withLocale

        public StdDateFormat withLocale​(Locale loc)
        "Mutant factory" method that will return an instance that uses specified Locale: either this instance (if setting would not change), or newly constructed instance with different Locale to use.
      • withLenient

        public StdDateFormat withLenient​(Boolean b)
        "Mutant factory" method that will return an instance that has specified leniency setting: either this instance (if setting would not change), or newly constructed instance.
        Since:
        2.9
      • withColonInTimeZone

        public StdDateFormat withColonInTimeZone​(boolean b)
        "Mutant factory" method that will return an instance that has specified handling of colon when serializing timezone (timezone either written like +0500 or +05:00): either this instance (if setting would not change), or newly constructed instance with desired setting for colon inclusion.

        NOTE: does NOT affect deserialization as colon is optional accepted but not required -- put another way, either serialization is accepted by this class.

        Since:
        2.9.1
      • getISO8601Format

        @Deprecated
        public static DateFormat getISO8601Format​(TimeZone tz,
                                                  Locale loc)
        Deprecated.
        Since 2.9
        Method for getting a non-shared DateFormat instance that uses specified timezone and can handle simple ISO-8601 compliant date format.
        Since:
        2.4
      • getRFC1123Format

        @Deprecated
        public static DateFormat getRFC1123Format​(TimeZone tz,
                                                  Locale loc)
        Deprecated.
        Since 2.9
        Method for getting a non-shared DateFormat instance that uses specific timezone and can handle RFC-1123 compliant date format.
        Since:
        2.4
      • setLenient

        public void setLenient​(boolean enabled)
        Need to override since we need to keep track of leniency locally, and not via underlying Calendar instance like base class does.
        Overrides:
        setLenient in class DateFormat
      • isColonIncludedInTimeZone

        public boolean isColonIncludedInTimeZone()
        Accessor for checking whether this instance would include colon within timezone serialization or not: if {code true}, timezone offset is serialized like -06:00; if {code false} as -0600.

        NOTE: only relevant for serialization (formatting), as deserialization (parsing) always accepts optional colon but does not require it, regardless of this setting.

        Returns:
        true if a colon is to be inserted between the hours and minutes of the TZ offset when serializing as String; otherwise false
        Since:
        2.9.1
      • toPattern

        public String toPattern()