Package java.text

Class DateFormat

  • All Implemented Interfaces:
    Serializable, Cloneable
    Direct Known Subclasses:
    SimpleDateFormat

    public abstract class DateFormat
    extends Format
    Formats or parses dates and times.

    This class provides factories for obtaining instances configured for a specific locale. The most common subclass is SimpleDateFormat.

    Sample Code

    This code:

     DateFormat[] formats = new DateFormat[] {
       DateFormat.getDateInstance(),
       DateFormat.getDateTimeInstance(),
       DateFormat.getTimeInstance(),
     };
     for (DateFormat df : formats) {
       System.out.println(df.format(new Date(0)));
       df.setTimeZone(TimeZone.getTimeZone("UTC"));
       System.out.println(df.format(new Date(0)));
     }
     

    Produces this output when run on an en_US device in the America/Los_Angeles time zone:

     Dec 31, 1969
     Jan 1, 1970
     Dec 31, 1969 4:00:00 PM
     Jan 1, 1970 12:00:00 AM
     4:00:00 PM
     12:00:00 AM
     
    And will produce similarly appropriate localized human-readable output on any user's system. Notice how the same point in time when formatted can appear to be a different time when rendered for a different time zone. This is one reason why formatting should be left until the data will only be presented to a human. Machines should interchange "Unix time" integers.
    See Also:
    Serialized Form
    • Field Detail

      • is24Hour

        public static Boolean is24Hour
        A tri-state boolean. If we're running stand-alone this will be null. If we're running in an app, the frameworks will have told us the user preference.
      • calendar

        protected Calendar calendar
        The calendar that this DateFormat uses to format a number representing a date.
      • numberFormat

        protected NumberFormat numberFormat
        The number format used to format a number.
      • DEFAULT

        public static final int DEFAULT
        The format style constant defining the default format style. The default is MEDIUM.
        See Also:
        Constant Field Values
      • FULL

        public static final int FULL
        The format style constant defining the full style.
        See Also:
        Constant Field Values
      • LONG

        public static final int LONG
        The format style constant defining the long style.
        See Also:
        Constant Field Values
      • MEDIUM

        public static final int MEDIUM
        The format style constant defining the medium style.
        See Also:
        Constant Field Values
      • SHORT

        public static final int SHORT
        The format style constant defining the short style.
        See Also:
        Constant Field Values
      • ERA_FIELD

        public static final int ERA_FIELD
        The FieldPosition selector for 'G' field alignment, corresponds to the Calendar.ERA field.
        See Also:
        Constant Field Values
      • YEAR_FIELD

        public static final int YEAR_FIELD
        The FieldPosition selector for 'y' field alignment, corresponds to the Calendar.YEAR field.
        See Also:
        Constant Field Values
      • MONTH_FIELD

        public static final int MONTH_FIELD
        The FieldPosition selector for 'M' field alignment, corresponds to the Calendar.MONTH field.
        See Also:
        Constant Field Values
      • DATE_FIELD

        public static final int DATE_FIELD
        The FieldPosition selector for 'd' field alignment, corresponds to the Calendar.DATE field.
        See Also:
        Constant Field Values
      • HOUR_OF_DAY1_FIELD

        public static final int HOUR_OF_DAY1_FIELD
        The FieldPosition selector for 'k' field alignment, corresponds to the Calendar.HOUR_OF_DAY field. HOUR_OF_DAY1_FIELD is used for the one-based 24-hour clock. For example, 23:59 + 01:00 results in 24:59.
        See Also:
        Constant Field Values
      • HOUR_OF_DAY0_FIELD

        public static final int HOUR_OF_DAY0_FIELD
        The FieldPosition selector for 'H' field alignment, corresponds to the Calendar.HOUR_OF_DAY field. HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock. For example, 23:59 + 01:00 results in 00:59.
        See Also:
        Constant Field Values
      • HOUR1_FIELD

        public static final int HOUR1_FIELD
        FieldPosition selector for 'h' field alignment, corresponding to the Calendar.HOUR field.
        See Also:
        Constant Field Values
      • HOUR0_FIELD

        public static final int HOUR0_FIELD
        The FieldPosition selector for 'K' field alignment, corresponding to the Calendar.HOUR field.
        See Also:
        Constant Field Values
    • Constructor Detail

      • DateFormat

        protected DateFormat()
        Constructs a new instance of DateFormat.
    • Method Detail

      • clone

        public Object clone()
        Returns a new instance of DateFormat with the same properties.
        Overrides:
        clone in class Format
        Returns:
        a shallow copy of this format.
        See Also:
        Cloneable
      • equals

        public boolean equals​(Object object)
        Compares this date format with the specified object and indicates if they are equal.
        Overrides:
        equals in class Object
        Parameters:
        object - the object to compare with this date format.
        Returns:
        true if object is a DateFormat object and it has the same properties as this date format; false otherwise.
        See Also:
        hashCode()
      • format

        public final StringBuffer format​(Object object,
                                         StringBuffer buffer,
                                         FieldPosition field)
        Formats the specified object as a string using the pattern of this date format and appends the string to the specified string buffer.

        If the field member of field contains a value specifying a format field, then its beginIndex and endIndex members will be updated with the position of the first occurrence of this field in the formatted text.

        Specified by:
        format in class Format
        Parameters:
        object - the source object to format, must be a Date or a Number. If object is a number then a date is constructed using the longValue() of the number.
        buffer - the target string buffer to append the formatted date/time to.
        field - on input: an optional alignment field; on output: the offsets of the alignment field in the formatted text.
        Returns:
        the string buffer.
        Throws:
        IllegalArgumentException - if object is neither a Date nor a Number instance.
      • format

        public final String format​(Date date)
        Formats the specified date using the rules of this date format.
        Parameters:
        date - the date to format.
        Returns:
        the formatted string.
      • format

        public abstract StringBuffer format​(Date date,
                                            StringBuffer buffer,
                                            FieldPosition field)
        Formats the specified date as a string using the pattern of this date format and appends the string to the specified string buffer.

        If the field member of field contains a value specifying a format field, then its beginIndex and endIndex members will be updated with the position of the first occurrence of this field in the formatted text.

        Parameters:
        date - the date to format.
        buffer - the target string buffer to append the formatted date/time to.
        field - on input: an optional alignment field; on output: the offsets of the alignment field in the formatted text.
        Returns:
        the string buffer.
      • getAvailableLocales

        public static Locale[] getAvailableLocales()
        Returns an array of locales for which custom DateFormat instances are available.

        Note that Android does not support user-supplied locale service providers.

      • getCalendar

        public Calendar getCalendar()
        Returns the calendar used by this DateFormat.
        Returns:
        the calendar used by this date format.
      • getDateInstance

        public static final DateFormat getDateInstance()
        Returns a DateFormat instance for formatting and parsing dates in the DEFAULT style for the default locale.
        Returns:
        the DateFormat instance for the default style and locale.
      • getDateInstance

        public static final DateFormat getDateInstance​(int style)
        Returns a DateFormat instance for formatting and parsing dates in the specified style for the user's default locale. See "Be wary of the default locale".
        Parameters:
        style - one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
        Returns:
        the DateFormat instance for style and the default locale.
        Throws:
        IllegalArgumentException - if style is not one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
      • getDateInstance

        public static final DateFormat getDateInstance​(int style,
                                                       Locale locale)
        Returns a DateFormat instance for formatting and parsing dates in the specified style for the specified locale.
        Parameters:
        style - one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
        locale - the locale.
        Returns:
        the DateFormat instance for style and locale.
        Throws:
        IllegalArgumentException - if style is not one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
      • getDateTimeInstance

        public static final DateFormat getDateTimeInstance()
        Returns a DateFormat instance for formatting and parsing dates and time values in the DEFAULT style for the default locale.
        Returns:
        the DateFormat instance for the default style and locale.
      • getDateTimeInstance

        public static final DateFormat getDateTimeInstance​(int dateStyle,
                                                           int timeStyle)
        Returns a DateFormat instance for formatting and parsing of both dates and time values in the manner appropriate for the user's default locale. See "Be wary of the default locale".
        Parameters:
        dateStyle - one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
        timeStyle - one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
        Returns:
        the DateFormat instance for dateStyle, timeStyle and the default locale.
        Throws:
        IllegalArgumentException - if dateStyle or timeStyle is not one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
      • getDateTimeInstance

        public static final DateFormat getDateTimeInstance​(int dateStyle,
                                                           int timeStyle,
                                                           Locale locale)
        Returns a DateFormat instance for formatting and parsing dates and time values in the specified styles for the specified locale.
        Parameters:
        dateStyle - one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
        timeStyle - one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
        locale - the locale.
        Returns:
        the DateFormat instance for dateStyle, timeStyle and locale.
        Throws:
        IllegalArgumentException - if dateStyle or timeStyle is not one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
      • getInstance

        public static final DateFormat getInstance()
        Returns a DateFormat instance for formatting and parsing dates and times in the SHORT style for the default locale.
        Returns:
        the DateFormat instance for the SHORT style and default locale.
      • set24HourTimePref

        public static final void set24HourTimePref​(boolean is24Hour)
      • getNumberFormat

        public NumberFormat getNumberFormat()
        Returns the NumberFormat used by this DateFormat.
        Returns:
        the NumberFormat used by this date format.
      • getTimeInstance

        public static final DateFormat getTimeInstance()
        Returns a DateFormat instance for formatting and parsing time values in the DEFAULT style for the default locale.
        Returns:
        the DateFormat instance for the default style and locale.
      • getTimeInstance

        public static final DateFormat getTimeInstance​(int style)
        Returns a DateFormat instance for formatting and parsing time values in the specified style for the user's default locale. See "Be wary of the default locale".
        Parameters:
        style - one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
        Returns:
        the DateFormat instance for style and the default locale.
        Throws:
        IllegalArgumentException - if style is not one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
      • getTimeInstance

        public static final DateFormat getTimeInstance​(int style,
                                                       Locale locale)
        Returns a DateFormat instance for formatting and parsing time values in the specified style for the specified locale.
        Parameters:
        style - one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
        locale - the locale.
        Returns:
        the DateFormat instance for style and locale.
        Throws:
        IllegalArgumentException - if style is not one of SHORT, MEDIUM, LONG, FULL, or DEFAULT.
      • getTimeZone

        public TimeZone getTimeZone()
        Returns the time zone of this date format's calendar.
        Returns:
        the time zone of the calendar used by this date format.
      • hashCode

        public int hashCode()
        Description copied from class: Object
        Returns an integer hash code for this object. By contract, any two objects for which Object.equals(java.lang.Object) returns true must return the same hash code value. This means that subclasses of Object usually override both methods or neither method.

        Note that hash values must not change over time unless information used in equals comparisons also changes.

        See Writing a correct hashCode method if you intend implementing your own hashCode method.

        Overrides:
        hashCode in class Object
        Returns:
        this object's hash code.
        See Also:
        Object.equals(java.lang.Object)
      • isLenient

        public boolean isLenient()
        Indicates whether the calendar used by this date format is lenient.
        Returns:
        true if the calendar is lenient; false otherwise.
      • parse

        public Date parse​(String string)
                   throws ParseException
        Parses a date from the specified string using the rules of this date format.
        Parameters:
        string - the string to parse.
        Returns:
        the Date resulting from the parsing.
        Throws:
        ParseException - if an error occurs during parsing.
      • parse

        public abstract Date parse​(String string,
                                   ParsePosition position)
        Parses a date from the specified string starting at the index specified by position. If the string is successfully parsed then the index of the ParsePosition is updated to the index following the parsed text. On error, the index is unchanged and the error index of ParsePosition is set to the index where the error occurred.

        By default, parsing is lenient: If the input is not in the form used by this object's format method but can still be parsed as a date, then the parse succeeds. Clients may insist on strict adherence to the format by calling setLenient(false).

        Parameters:
        string - the string to parse.
        position - input/output parameter, specifies the start index in string from where to start parsing. If parsing is successful, it is updated with the index following the parsed text; on error, the index is unchanged and the error index is set to the index where the error occurred.
        Returns:
        the date resulting from the parse, or null if there is an error.
      • parseObject

        public Object parseObject​(String string,
                                  ParsePosition position)
        Parses a date from the specified string starting at the index specified by position. If the string is successfully parsed then the index of the ParsePosition is updated to the index following the parsed text. On error, the index is unchanged and the error index of ParsePosition is set to the index where the error occurred.

        By default, parsing is lenient: If the input is not in the form used by this object's format method but can still be parsed as a date, then the parse succeeds. Clients may insist on strict adherence to the format by calling setLenient(false).

        Specified by:
        parseObject in class Format
        Parameters:
        string - the string to parse.
        position - input/output parameter, specifies the start index in string from where to start parsing. If parsing is successful, it is updated with the index following the parsed text; on error, the index is unchanged and the error index is set to the index where the error occurred.
        Returns:
        the date resulting from the parsing, or null if there is an error.
      • setCalendar

        public void setCalendar​(Calendar cal)
        Sets the calendar used by this date format.
        Parameters:
        cal - the new calendar.
      • setLenient

        public void setLenient​(boolean value)
        Specifies whether or not date/time parsing shall be lenient. With lenient parsing, the parser may use heuristics to interpret inputs that do not precisely match this object's format. With strict parsing, inputs must match this object's format.
        Parameters:
        value - true to set the calendar to be lenient, false otherwise.
      • setNumberFormat

        public void setNumberFormat​(NumberFormat format)
        Sets the NumberFormat used by this date format.
        Parameters:
        format - the new number format.
      • setTimeZone

        public void setTimeZone​(TimeZone timezone)
        Sets the time zone of the calendar used by this date format.
        Parameters:
        timezone - the new time zone.