Class DateFormatSymbols

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

    public class DateFormatSymbols
    extends Object
    implements Serializable, Cloneable
    .

    DateFormatSymbols is a public class for encapsulating localizable date-time formatting data, such as the names of the months, the names of the days of the week, and the time zone data. DateFormat and SimpleDateFormat both use DateFormatSymbols to encapsulate this information.

    Typically you shouldn't use DateFormatSymbols directly. Rather, you are encouraged to create a date-time formatter with the DateFormat class's factory methods: getTimeInstance, getDateInstance, or getDateTimeInstance. These methods automatically create a DateFormatSymbols for the formatter so that you don't have to. After the formatter is created, you may modify its format pattern using the setPattern method. For more information about creating formatters using DateFormat's factory methods, see DateFormat.

    If you decide to create a date-time formatter with a specific format pattern for a specific locale, you can do so with:

     new SimpleDateFormat(aPattern, new DateFormatSymbols(aLocale)).
     

    DateFormatSymbols objects are clonable. When you obtain a DateFormatSymbols object, feel free to modify the date-time formatting data. For instance, you can replace the localized date-time format pattern characters with the ones that you feel easy to remember. Or you can change the representative cities to your favorite ones.

    New DateFormatSymbols subclasses may be added to support SimpleDateFormat for date-time formatting for additional locales.

    Author:
    Chen-Lieh Huang
    See Also:
    DateFormat, SimpleDateFormat, SimpleTimeZone, Serialized Form
    • Constructor Detail

      • DateFormatSymbols

        public DateFormatSymbols()
        Constructs a DateFormatSymbols object by loading format data from resources for the default FORMAT locale.
        Throws:
        MissingResourceException - if the resources for the default locale cannot be found or cannot be loaded.
        See Also:
        ULocale.Category.FORMAT
      • DateFormatSymbols

        public DateFormatSymbols​(Locale locale)
        Constructs a DateFormatSymbols object by loading format data from resources for the given locale.
        Throws:
        MissingResourceException - if the resources for the specified locale cannot be found or cannot be loaded.
      • DateFormatSymbols

        public DateFormatSymbols​(ULocale locale)
        Constructs a DateFormatSymbols object by loading format data from resources for the given ulocale.
        Throws:
        MissingResourceException - if the resources for the specified locale cannot be found or cannot be loaded.
      • DateFormatSymbols

        public DateFormatSymbols​(Calendar cal,
                                 Locale locale)
        Returns the DateFormatSymbols object that should be used to format a calendar system's dates in the given locale.
        Parameters:
        cal - The calendar system whose date format symbols are desired.
        locale - The locale whose symbols are desired.
        See Also:
        DateFormatSymbols(java.util.Locale)
      • DateFormatSymbols

        public DateFormatSymbols​(Calendar cal,
                                 ULocale locale)
        Returns the DateFormatSymbols object that should be used to format a calendar system's dates in the given locale.
        Parameters:
        cal - The calendar system whose date format symbols are desired.
        locale - The ulocale whose symbols are desired.
        See Also:
        DateFormatSymbols(java.util.Locale)
      • DateFormatSymbols

        public DateFormatSymbols​(ResourceBundle bundle,
                                 Locale locale)
        Fetches a custom calendar's DateFormatSymbols out of the given resource bundle. Symbols that are not overridden are inherited from the default DateFormatSymbols for the locale.
        See Also:
        DateFormatSymbols(java.util.Locale)
      • DateFormatSymbols

        public DateFormatSymbols​(ResourceBundle bundle,
                                 ULocale locale)
        Fetches a custom calendar's DateFormatSymbols out of the given resource bundle. Symbols that are not overridden are inherited from the default DateFormatSymbols for the locale.
        See Also:
        DateFormatSymbols(java.util.Locale)
    • Method Detail

      • getInstance

        public static DateFormatSymbols getInstance()
        Returns a DateFormatSymbols instance for the default locale. Unlike java.text.DateFormatSymbols#getInstance, this method simply returns new com.ibm.icu.text.DateFormatSymbols(). ICU does not support DateFormatSymbolsProvider introduced in Java 6 or its equivalent implementation for now.
        Returns:
        A DateFormatSymbols instance.
      • getInstance

        public static DateFormatSymbols getInstance​(Locale locale)
        Returns a DateFormatSymbols instance for the given locale. Unlike java.text.DateFormatSymbols#getInstance, this method simply returns new com.ibm.icu.text.DateFormatSymbols(locale). ICU does not support DateFormatSymbolsProvider introduced in Java 6 or its equivalent implementation for now.
        Parameters:
        locale - the locale.
        Returns:
        A DateFormatSymbols instance.
      • getInstance

        public static DateFormatSymbols getInstance​(ULocale locale)
        Returns a DateFormatSymbols instance for the given locale. Unlike java.text.DateFormatSymbols#getInstance, this method simply returns new com.ibm.icu.text.DateFormatSymbols(locale). ICU does not support DateFormatSymbolsProvider introduced in Java 6 or its equivalent implementation for now.
        Parameters:
        locale - the locale.
        Returns:
        A DateFormatSymbols instance.
      • getAvailableLocales

        public static Locale[] getAvailableLocales()
        Returns an array of all locales for which the getInstance methods of this class can return localized instances. Unlike java.text.DateFormatSymbols#getAvailableLocales, this method simply returns the array of Locales available in this class. ICU does not support DateFormatSymbolsProvider introduced in Java 6 or its equivalent implementation for now.
        Returns:
        An array of Locales for which localized DateFormatSymbols instances are available.
      • getAvailableULocales

        public static ULocale[] getAvailableULocales()
        Returns an array of all locales for which the getInstance methods of this class can return localized instances. Unlike java.text.DateFormatSymbols#getAvailableLocales, this method simply returns the array of ULocales available in this class. ICU does not support DateFormatSymbolsProvider introduced in Java 6 or its equivalent implementation for now.
        Returns:
        An array of ULocales for which localized DateFormatSymbols instances are available.
      • getEras

        public String[] getEras()
        Returns era strings. For example: "AD" and "BC".
        Returns:
        the era strings.
      • setEras

        public void setEras​(String[] newEras)
        Sets era strings. For example: "AD" and "BC".
        Parameters:
        newEras - the new era strings.
      • getEraNames

        public String[] getEraNames()
        Returns era name strings. For example: "Anno Domini" and "Before Christ".
        Returns:
        the era strings.
      • setEraNames

        public void setEraNames​(String[] newEraNames)
        Sets era name strings. For example: "Anno Domini" and "Before Christ".
        Parameters:
        newEraNames - the new era strings.
      • getMonths

        public String[] getMonths()
        Returns month strings. For example: "January", "February", etc.
        Returns:
        the month strings.
      • getMonths

        public String[] getMonths​(int context,
                                  int width)
        Returns month strings. For example: "January", "February", etc.
        Parameters:
        context - The month context, FORMAT or STANDALONE.
        width - The width or the returned month string, either WIDE, ABBREVIATED, or NARROW.
        Returns:
        the month strings.
      • setMonths

        public void setMonths​(String[] newMonths)
        Sets month strings. For example: "January", "February", etc.
        Parameters:
        newMonths - the new month strings.
      • setMonths

        public void setMonths​(String[] newMonths,
                              int context,
                              int width)
        Sets month strings. For example: "January", "February", etc.
        Parameters:
        newMonths - the new month strings.
        context - The formatting context, FORMAT or STANDALONE.
        width - The width of the month string, either WIDE, ABBREVIATED, or NARROW.
      • getShortMonths

        public String[] getShortMonths()
        Returns short month strings. For example: "Jan", "Feb", etc.
        Returns:
        the short month strings.
      • setShortMonths

        public void setShortMonths​(String[] newShortMonths)
        Sets short month strings. For example: "Jan", "Feb", etc.
        Parameters:
        newShortMonths - the new short month strings.
      • getWeekdays

        public String[] getWeekdays()
        Returns wide weekday strings. For example: "Sunday", "Monday", etc.
        Returns:
        the weekday strings. Use Calendar.SUNDAY, Calendar.MONDAY, etc. to index the result array.
      • getWeekdays

        public String[] getWeekdays​(int context,
                                    int width)
        Returns weekday strings. For example: "Sunday", "Monday", etc.
        Parameters:
        context - Formatting context, either FORMAT or STANDALONE.
        width - Width of strings to be returned, either WIDE, ABBREVIATED, SHORT, or NARROW
        Returns:
        the weekday strings. Use Calendar.SUNDAY, Calendar.MONDAY, etc. to index the result array.
      • setWeekdays

        public void setWeekdays​(String[] newWeekdays,
                                int context,
                                int width)
        Sets weekday strings. For example: "Sunday", "Monday", etc.
        Parameters:
        newWeekdays - The new weekday strings.
        context - The formatting context, FORMAT or STANDALONE.
        width - The width of the strings, either WIDE, ABBREVIATED, SHORT, or NARROW.
      • setWeekdays

        public void setWeekdays​(String[] newWeekdays)
        Sets wide weekday strings. For example: "Sunday", "Monday", etc.
        Parameters:
        newWeekdays - the new weekday strings. The array should be indexed by Calendar.SUNDAY, Calendar.MONDAY, etc.
      • getShortWeekdays

        public String[] getShortWeekdays()
        Returns abbreviated weekday strings; for example: "Sun", "Mon", etc. (Note: the method name is misleading; it does not get the CLDR-style "short" weekday strings, e.g. "Su", "Mo", etc.)
        Returns:
        the abbreviated weekday strings. Use Calendar.SUNDAY, Calendar.MONDAY, etc. to index the result array.
      • setShortWeekdays

        public void setShortWeekdays​(String[] newAbbrevWeekdays)
        Sets abbreviated weekday strings; for example: "Sun", "Mon", etc. (Note: the method name is misleading; it does not set the CLDR-style "short" weekday strings, e.g. "Su", "Mo", etc.)
        Parameters:
        newAbbrevWeekdays - the new abbreviated weekday strings. The array should be indexed by Calendar.SUNDAY, Calendar.MONDAY, etc.
      • getQuarters

        public String[] getQuarters​(int context,
                                    int width)
        Returns quarter strings. For example: "1st Quarter", "2nd Quarter", etc.
        Parameters:
        context - The quarter context, FORMAT or STANDALONE.
        width - The width or the returned quarter string, either WIDE or ABBREVIATED. There are no NARROW quarters.
        Returns:
        the quarter strings.
      • setQuarters

        public void setQuarters​(String[] newQuarters,
                                int context,
                                int width)
        Sets quarter strings. For example: "1st Quarter", "2nd Quarter", etc.
        Parameters:
        newQuarters - the new quarter strings.
        context - The formatting context, FORMAT or STANDALONE.
        width - The width of the quarter string, either WIDE or ABBREVIATED. There are no NARROW quarters.
      • getYearNames

        public String[] getYearNames​(int context,
                                     int width)
        Returns cyclic year name strings if the calendar has them, for example: "jia-zi", "yi-chou", etc.
        Parameters:
        context - The usage context: FORMAT, STANDALONE.
        width - The requested name width: WIDE, ABBREVIATED, SHORT, NARROW.
        Returns:
        The year name strings, or null if they are not available for this calendar.
      • setYearNames

        public void setYearNames​(String[] yearNames,
                                 int context,
                                 int width)
        Sets cyclic year name strings, for example: "jia-zi", "yi-chou", etc.
        Parameters:
        yearNames - The new cyclic year name strings.
        context - The usage context: FORMAT, STANDALONE (currently only FORMAT is supported).
        width - The name width: WIDE, ABBREVIATED, NARROW (currently only ABBREVIATED is supported).
      • getZodiacNames

        public String[] getZodiacNames​(int context,
                                       int width)
        Returns calendar zodiac name strings if the calendar has them, for example: "Rat", "Ox", "Tiger", etc.
        Parameters:
        context - The usage context: FORMAT, STANDALONE.
        width - The requested name width: WIDE, ABBREVIATED, SHORT, NARROW.
        Returns:
        The zodiac name strings, or null if they are not available for this calendar.
      • setZodiacNames

        public void setZodiacNames​(String[] zodiacNames,
                                   int context,
                                   int width)
        Sets calendar zodiac name strings, for example: "Rat", "Ox", "Tiger", etc.
        Parameters:
        zodiacNames - The new zodiac name strings.
        context - The usage context: FORMAT, STANDALONE (currently only FORMAT is supported).
        width - The name width: WIDE, ABBREVIATED, NARROW (currently only ABBREVIATED is supported).
      • getLeapMonthPattern

        @Deprecated
        public String getLeapMonthPattern​(int context,
                                          int width)
        Deprecated.
        This API is ICU internal only.
        Returns the appropriate leapMonthPattern if the calendar has them, for example: "{0}bis"
        Parameters:
        context - The usage context: FORMAT, STANDALONE, NUMERIC.
        width - The requested pattern width: WIDE, ABBREVIATED, SHORT, NARROW.
        Returns:
        The leapMonthPattern, or null if not available for this calendar.
      • setLeapMonthPattern

        @Deprecated
        public void setLeapMonthPattern​(String leapMonthPattern,
                                        int context,
                                        int width)
        Deprecated.
        This API is ICU internal only.
        Sets a leapMonthPattern, for example: "{0}bis"
        Parameters:
        leapMonthPattern - The new leapMonthPattern.
        context - The usage context: FORMAT, STANDALONE, NUMERIC.
        width - The name width: WIDE, ABBREVIATED, NARROW.
      • getAmPmStrings

        public String[] getAmPmStrings()
        Returns am/pm strings. For example: "AM" and "PM".
        Returns:
        the weekday strings.
      • setAmPmStrings

        public void setAmPmStrings​(String[] newAmpms)
        Sets am/pm strings. For example: "AM" and "PM".
        Parameters:
        newAmpms - the new ampm strings.
      • getTimeSeparatorString

        @Deprecated
        public String getTimeSeparatorString()
        Deprecated.
        This API is ICU internal only.
        Returns the time separator string. For example: ":".
        Returns:
        the time separator string.
      • setTimeSeparatorString

        @Deprecated
        public void setTimeSeparatorString​(String newTimeSeparator)
        Deprecated.
        This API is ICU internal only.
        Sets the time separator string. For example: ":".
        Parameters:
        newTimeSeparator - the new time separator string.
      • getZoneStrings

        public String[][] getZoneStrings()
        Returns time zone strings.

        The array returned by this API is a two dimensional String array and each row contains at least following strings:

        • ZoneStrings[n][0] - System time zone ID
        • ZoneStrings[n][1] - Long standard time display name
        • ZoneStrings[n][2] - Short standard time display name
        • ZoneStrings[n][3] - Long daylight saving time display name
        • ZoneStrings[n][4] - Short daylight saving time display name
        When a localized display name is not available, the corresponding array element will be null.

        Note: ICU implements the time zone display name formatting algorithm specified by UTS#35 Unicode Locale Data Markup Language(LDML). The algorithm supports historic display name changes and various different types of names not available in DateFormatSymbols.getZoneStrings(). For accessing the full set of time zone string data used by ICU implementation, you should use TimeZoneNames APIs instead.

        Returns:
        the time zone strings.
      • setZoneStrings

        public void setZoneStrings​(String[][] newZoneStrings)
        Sets time zone strings.

        Note: SimpleDateFormat no longer uses the zone strings stored in a DateFormatSymbols. Therefore, the time zone strings set by this method have no effects in an instance of SimpleDateFormat for formatting time zones. If you want to customize time zone display names formatted by SimpleDateFormat, you should customize TimeZoneFormat and set the instance by SimpleDateFormat.setTimeZoneFormat(TimeZoneFormat) instead.

        Parameters:
        newZoneStrings - the new time zone strings.
      • getLocalPatternChars

        public String getLocalPatternChars()
        Returns localized date-time pattern characters. For example: 'u', 't', etc.

        Note: ICU no longer provides localized date-time pattern characters for a locale starting ICU 3.8. This method returns the non-localized date-time pattern characters unless user defined localized data is set by setLocalPatternChars.

        Returns:
        the localized date-time pattern characters.
      • setLocalPatternChars

        public void setLocalPatternChars​(String newLocalPatternChars)
        Sets localized date-time pattern characters. For example: 'u', 't', etc.
        Parameters:
        newLocalPatternChars - the new localized date-time pattern characters.
      • hashCode

        public int hashCode()
        Override hashCode. Generates a hash code for the DateFormatSymbols object.
        Overrides:
        hashCode in class Object
      • equals

        public boolean equals​(Object obj)
        Overrides equals.
        Overrides:
        equals in class Object
      • initializeData

        protected void initializeData​(ULocale desiredLocale,
                                      String type)
        Initializes format symbols for the locale and calendar type
        Parameters:
        desiredLocale - The locale whose symbols are desired.
        type - The calendar type whose date format symbols are desired.
      • initializeData

        @Deprecated
        protected void initializeData​(ULocale desiredLocale,
                                      com.ibm.icu.impl.ICUResourceBundle b,
                                      String calendarType)
        Deprecated.
        This API is ICU internal only.
        Initializes format symbols for the locale and calendar type
        Parameters:
        desiredLocale - The locale whose symbols are desired.
        b - Resource bundle provided externally
        calendarType - The calendar type being used
      • getDateFormatBundle

        @Deprecated
        public static ResourceBundle getDateFormatBundle​(Class<? extends Calendar> calendarClass,
                                                         Locale locale)
                                                  throws MissingResourceException
        Deprecated.
        ICU 4.0
        Finds the ResourceBundle containing the date format information for a specified calendar subclass in a given locale.

        The resource bundle name is based on the calendar's fully-specified class name, with ".resources" inserted at the end of the package name (just before the class name) and "Symbols" appended to the end. For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar" is "com.ibm.icu.impl.data.HebrewCalendarSymbols".

        Note:Because of the structural changes in the ICU locale bundle, this API no longer works as described. This method always returns null.

        Throws:
        MissingResourceException
      • getDateFormatBundle

        @Deprecated
        public static ResourceBundle getDateFormatBundle​(Class<? extends Calendar> calendarClass,
                                                         ULocale locale)
                                                  throws MissingResourceException
        Deprecated.
        ICU 4.0
        Finds the ResourceBundle containing the date format information for a specified calendar subclass in a given locale.

        The resource bundle name is based on the calendar's fully-specified class name, with ".resources" inserted at the end of the package name (just before the class name) and "Symbols" appended to the end. For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar" is "com.ibm.icu.impl.data.HebrewCalendarSymbols".

        Note:Because of the structural changes in the ICU locale bundle, this API no longer works as described. This method always returns null.

        Throws:
        MissingResourceException
      • getLocale

        public final ULocale getLocale​(ULocale.Type type)
        Returns the locale that was used to create this object, or null. This may may differ from the locale requested at the time of this object's creation. For example, if an object is created for locale en_US_CALIFORNIA, the actual data may be drawn from en (the actual locale), and en_US may be the most specific locale that exists (the valid locale).

        Note: This method will be implemented in ICU 3.0; ICU 2.8 contains a partial preview implementation. The * actual locale is returned correctly, but the valid locale is not, in most cases.

        Parameters:
        type - type of information requested, either ULocale.VALID_LOCALE or ULocale.ACTUAL_LOCALE.
        Returns:
        the information specified by type, or null if this object was not constructed from locale data.
        See Also:
        ULocale, ULocale.VALID_LOCALE, ULocale.ACTUAL_LOCALE