Class TimeZoneJDK

  • All Implemented Interfaces:
    Freezable<TimeZone>, java.io.Serializable, java.lang.Cloneable

    public class TimeZoneJDK
    extends TimeZone
    TimeZoneJDK is an adapter class which wraps java.util.TimeZone and implements ICU4J TimeZone APIs.
    See Also:
    Serialized Form
    • Field Detail

      • fJdkTz

        private java.util.TimeZone fJdkTz
      • fJdkCal

        private transient java.util.Calendar fJdkCal
      • fIsFrozen

        private transient volatile boolean fIsFrozen
    • Constructor Detail

      • TimeZoneJDK

        private TimeZoneJDK​(java.util.TimeZone jdkTz)
    • Method Detail

      • wrap

        public static TimeZone wrap​(java.util.TimeZone jdkTz)
      • unwrap

        public java.util.TimeZone unwrap()
      • clone

        public java.lang.Object clone()
        Description copied from class: TimeZone
        Overrides clone.
        Overrides:
        clone in class TimeZone
      • equals

        public boolean equals​(java.lang.Object obj)
        Description copied from class: TimeZone
        Overrides equals.
        Overrides:
        equals in class TimeZone
        Returns:
        true if this object is the same as the obj argument; false otherwise.
      • getDisplayName

        public java.lang.String getDisplayName​(boolean daylight,
                                               int style,
                                               java.util.Locale locale)
        Description copied from class: TimeZone
        Returns a name of this time zone suitable for presentation to the user in the specified locale. If the display name is not available for the locale, then this method returns a string in the localized GMT offset format such as GMT[+-]HH:mm.
        Overrides:
        getDisplayName in class TimeZone
        Parameters:
        daylight - if true, return the daylight savings name.
        style - the output style of the display name. Valid styles are SHORT, LONG, SHORT_GENERIC, LONG_GENERIC, SHORT_GMT, LONG_GMT, SHORT_COMMONLY_USED or GENERIC_LOCATION.
        locale - the locale in which to supply the display name.
        Returns:
        the human-readable name of this time zone in the given locale or in the default locale if the given locale is not recognized.
      • getDisplayName

        public java.lang.String getDisplayName​(boolean daylight,
                                               int style,
                                               ULocale locale)
        Description copied from class: TimeZone
        Returns a name of this time zone suitable for presentation to the user in the specified locale. If the display name is not available for the locale, then this method returns a string in the localized GMT offset format such as GMT[+-]HH:mm.
        Overrides:
        getDisplayName in class TimeZone
        Parameters:
        daylight - if true, return the daylight savings name.
        style - the output style of the display name. Valid styles are SHORT, LONG, SHORT_GENERIC, LONG_GENERIC, SHORT_GMT, LONG_GMT, SHORT_COMMONLY_USED or GENERIC_LOCATION.
        locale - the locale in which to supply the display name.
        Returns:
        the human-readable name of this time zone in the given locale or in the default locale if the given locale is not recognized.
      • getDSTSavings

        public int getDSTSavings()
        Description copied from class: TimeZone
        Returns the amount of time to be added to local standard time to get local wall clock time.

        The default implementation always returns 3600000 milliseconds (i.e., one hour) if this time zone observes Daylight Saving Time. Otherwise, 0 (zero) is returned.

        If an underlying TimeZone implementation subclass supports historical Daylight Saving Time changes, this method returns the known latest daylight saving value.

        Overrides:
        getDSTSavings in class TimeZone
        Returns:
        the amount of saving time in milliseconds
      • getID

        public java.lang.String getID()
        Description copied from class: TimeZone
        Gets the ID of this time zone.
        Overrides:
        getID in class TimeZone
        Returns:
        the ID of this time zone.
      • getOffset

        public int getOffset​(int era,
                             int year,
                             int month,
                             int day,
                             int dayOfWeek,
                             int milliseconds)
        Description copied from class: TimeZone
        Gets the time zone offset, for current date, modified in case of daylight savings. This is the offset to add to UTC to get local time.
        Specified by:
        getOffset in class TimeZone
        Parameters:
        era - the era of the given date.
        year - the year in the given date.
        month - the month in the given date. Month is 0-based. e.g., 0 for January.
        day - the day-in-month of the given date.
        dayOfWeek - the day-of-week of the given date.
        milliseconds - the millis in day in standard local time.
        Returns:
        the offset to add to GMT to get local time.
      • getOffset

        public int getOffset​(long date)
        Description copied from class: TimeZone
        Returns the offset of this time zone from UTC at the specified date. If Daylight Saving Time is in effect at the specified date, the offset value is adjusted with the amount of daylight saving.
        Overrides:
        getOffset in class TimeZone
        Parameters:
        date - the date represented in milliseconds since January 1, 1970 00:00:00 GMT
        Returns:
        the amount of time in milliseconds to add to UTC to get local time.
        See Also:
        Calendar.ZONE_OFFSET, Calendar.DST_OFFSET, TimeZone.getOffset(long, boolean, int[])
      • getOffset

        public void getOffset​(long date,
                              boolean local,
                              int[] offsets)
        Description copied from class: TimeZone
        Returns the time zone raw and GMT offset for the given moment in time. Upon return, local-millis = GMT-millis + rawOffset + dstOffset. All computations are performed in the proleptic Gregorian calendar. The default implementation in the TimeZone class delegates to the 8-argument getOffset().
        Overrides:
        getOffset in class TimeZone
        Parameters:
        date - moment in time for which to return offsets, in units of milliseconds from January 1, 1970 0:00 GMT, either GMT time or local wall time, depending on local.
        local - if true, date is local wall time; otherwise it is in GMT time.
        offsets - output parameter to receive the raw offset, that is, the offset not including DST adjustments, in offsets[0], and the DST offset, that is, the offset to be added to rawOffset to obtain the total offset between local and GMT time, in offsets[1]. If DST is not in effect, the DST offset is zero; otherwise it is a positive value, typically one hour.
      • getRawOffset

        public int getRawOffset()
        Description copied from class: TimeZone
        Gets unmodified offset, NOT modified in case of daylight savings. This is the offset to add to UTC to get local time.
        Specified by:
        getRawOffset in class TimeZone
        Returns:
        the unmodified offset to add to UTC to get local time.
      • hashCode

        public int hashCode()
        Description copied from class: TimeZone
        Overrides hashCode.
        Overrides:
        hashCode in class TimeZone
        Returns:
        a hash code value for this object.
      • hasSameRules

        public boolean hasSameRules​(TimeZone other)
        Description copied from class: TimeZone
        Returns true if this zone has the same rule and offset as another zone. That is, if this zone differs only in ID, if at all. Returns false if the other zone is null.
        Overrides:
        hasSameRules in class TimeZone
        Parameters:
        other - the TimeZone object to be compared with
        Returns:
        true if the other zone is not null and is the same as this one, with the possible exception of the ID
      • inDaylightTime

        public boolean inDaylightTime​(java.util.Date date)
        Description copied from class: TimeZone
        Queries if the given date is in daylight savings time in this time zone.
        Specified by:
        inDaylightTime in class TimeZone
        Parameters:
        date - the given Date.
        Returns:
        true if the given date is in daylight savings time, false, otherwise.
      • setID

        public void setID​(java.lang.String ID)
        Description copied from class: TimeZone
        Sets the time zone ID. This does not change any other data in the time zone object.
        Overrides:
        setID in class TimeZone
        Parameters:
        ID - the new time zone ID.
      • setRawOffset

        public void setRawOffset​(int offsetMillis)
        Description copied from class: TimeZone
        Sets the base time zone offset to GMT. This is the offset to add to UTC to get local time.
        Specified by:
        setRawOffset in class TimeZone
        Parameters:
        offsetMillis - the given base time zone offset to GMT.
      • useDaylightTime

        public boolean useDaylightTime()
        Description copied from class: TimeZone
        Queries if this time zone uses daylight savings time.
        Specified by:
        useDaylightTime in class TimeZone
        Returns:
        true if this time zone uses daylight savings time, false, otherwise.

        Note:The default implementation of ICU TimeZone uses the tz database, which supports historic rule changes, for system time zones. With the implementation, there are time zones that used daylight savings time in the past, but no longer used currently. For example, Asia/Tokyo has never used daylight savings time since 1951. Most clients would expect that this method to return false for such case. The default implementation of this method returns true when the time zone uses daylight savings time in the current (Gregorian) calendar year.

      • observesDaylightTime

        public boolean observesDaylightTime()
        Description copied from class: TimeZone
        Queries if this time zone is in daylight saving time or will observe daylight saving time at any future time.

        The default implementation in this class returns true if TimeZone.useDaylightTime() or inDaylightTime(new Date()) returns true.

        Note: This method was added for TimeZone compatibility support. The TimeZone.useDaylightTime() method only checks the last known rule(s), therefore it may return false even the zone observes daylight saving time currently. TimeZone added observesDaylightTime() to resolve the issue. In ICU, TimeZone.useDaylightTime() works differently. The ICU implementation checks if the zone uses daylight saving time in the current calendar year. Therefore, it will never return false if daylight saving time is currently used.

        ICU's TimeZone subclass implementations override this method to support the same behavior with TimeZone.observesDaylightTime(). Unlike TimeZone.useDaylightTime(), the implementation does not take past daylight saving time into account, so that this method may return false even when TimeZone.useDaylightTime() returns true.

        Overrides:
        observesDaylightTime in class TimeZone
        Returns:
        true if this time zone is in daylight saving time or will observe daylight saving time at any future time.
        See Also:
        TimeZone.useDaylightTime()