public abstract class

TimeZone

extends Object
implements Serializable Cloneable
java.lang.Object
   ↳ java.util.TimeZone
Known Direct Subclasses

Class Overview

TimeZone represents a time zone, primarily used for configuring a Calendar or SimpleDateFormat instance.

Most applications will use getDefault() which returns a TimeZone based on the time zone where the program is running.

You can also get a specific TimeZone by id.

It is highly unlikely you'll ever want to use anything but the factory methods yourself. Let classes like Calendar and SimpleDateFormat do the date computations for you.

If you do need to do date computations manually, there are two common cases to take into account:

  • Somewhere like California, where daylight time is used. The useDaylightTime() method will always return true, and inDaylightTime(Date) must be used to determine whether or not daylight time applies to a given Date. The getRawOffset() method will return a raw offset of (in this case) -8 hours from UTC, which isn't usually very useful. More usefully, the getOffset(int, int, int, int, int, int) methods return the actual offset from UTC for a given point in time; this is the raw offset plus (if the point in time is in daylight time) the applicable DST savings (usually, but not necessarily, 1 hour).
  • Somewhere like Japan, where daylight time is not used. The useDaylightTime() and inDaylightTime(Date) methods both always return false, and the raw and actual offsets will always be the same.

Note the type returned by the factory methods getDefault() and getTimeZone(String) is implementation dependent. This may introduce serialization incompatibility issues between different implementations. Android returns instances of SimpleTimeZone so that the bytes serialized by Android can be deserialized successfully on other implementations, but the reverse compatibility cannot be guaranteed.

Summary

Constants
int LONG The long display name style, such as Pacific Daylight Time.
int SHORT The short display name style, such as PDT.
Public Constructors
TimeZone()
Public Methods
Object clone()
Returns a new time zone with the same ID, raw offset, and daylight savings time rules as this time zone.
synchronized static String[] getAvailableIDs()
Returns the system's installed time zone IDs.
synchronized static String[] getAvailableIDs(int offsetMillis)
Returns the IDs of the time zones whose offset from UTC is offsetMillis.
int getDSTSavings()
Returns the daylight savings offset in milliseconds for this time zone.
synchronized static TimeZone getDefault()
Returns the user's preferred time zone.
final String getDisplayName(Locale locale)
Equivalent to getDisplayName(false, TimeZone.LONG, locale).
String getDisplayName(boolean daylightTime, int style, Locale locale)
Returns the short or long name of this time zone with either standard or daylight time, as written in locale.
final String getDisplayName()
Equivalent to getDisplayName(false, TimeZone.LONG, Locale.getDefault()).
final String getDisplayName(boolean daylightTime, int style)
Equivalent to getDisplayName(daylightTime, style, Locale.getDefault()).
String getID()
Returns the ID of this TimeZone, such as America/Los_Angeles, GMT-08:00 or UTC.
abstract int getOffset(int era, int year, int month, int day, int dayOfWeek, int timeOfDayMillis)
Returns this time zone's offset in milliseconds from UTC at the specified date and time.
int getOffset(long time)
Returns the offset in milliseconds from UTC for this time zone at time.
abstract int getRawOffset()
Returns the offset in milliseconds from UTC of this time zone's standard time.
synchronized static TimeZone getTimeZone(String id)
Returns a TimeZone suitable for id, or GMT on failure.
boolean hasSameRules(TimeZone timeZone)
Returns true if timeZone has the same rules as this time zone.
abstract boolean inDaylightTime(Date time)
Returns true if time is in a daylight savings time period for this time zone.
synchronized static void setDefault(TimeZone timeZone)
Overrides the default time zone for the current process only.
void setID(String id)
Sets the ID of this TimeZone.
abstract void setRawOffset(int offsetMillis)
Sets the offset in milliseconds from UTC of this time zone's standard time.
abstract boolean useDaylightTime()
Returns true if this time zone has a daylight savings time period.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final int LONG

Since: API Level 1

The long display name style, such as Pacific Daylight Time. Requests for this style may yield GMT offsets like GMT-08:00.

Constant Value: 1 (0x00000001)

public static final int SHORT

Since: API Level 1

The short display name style, such as PDT. Requests for this style may yield GMT offsets like GMT-08:00.

Constant Value: 0 (0x00000000)

Public Constructors

public TimeZone ()

Since: API Level 1

Public Methods

public Object clone ()

Since: API Level 1

Returns a new time zone with the same ID, raw offset, and daylight savings time rules as this time zone.

Returns
  • a copy of this object.

public static synchronized String[] getAvailableIDs ()

Since: API Level 1

Returns the system's installed time zone IDs. Any of these IDs can be passed to getTimeZone(String) to lookup the corresponding time zone instance.

public static synchronized String[] getAvailableIDs (int offsetMillis)

Since: API Level 1

Returns the IDs of the time zones whose offset from UTC is offsetMillis. Any of these IDs can be passed to getTimeZone(String) to lookup the corresponding time zone instance.

Returns
  • a possibly-empty array.

public int getDSTSavings ()

Since: API Level 1

Returns the daylight savings offset in milliseconds for this time zone. The base implementation returns 3600000 (1 hour) for time zones that use daylight savings time and 0 for timezones that do not. Subclasses should override this method for other daylight savings offsets.

Note that this method doesn't tell you whether or not to apply the offset: you need to call inDaylightTime for the specific time you're interested in. If this method returns a non-zero offset, that only tells you that this TimeZone sometimes observes daylight savings.

public static synchronized TimeZone getDefault ()

Since: API Level 1

Returns the user's preferred time zone. This may have been overridden for this process with setDefault(TimeZone).

Since the user's time zone changes dynamically, avoid caching this value. Instead, use this method to look it up for each use.

public final String getDisplayName (Locale locale)

Since: API Level 1

Equivalent to getDisplayName(false, TimeZone.LONG, locale).

public String getDisplayName (boolean daylightTime, int style, Locale locale)

Since: API Level 1

Returns the short or long name of this time zone with either standard or daylight time, as written in locale. If the name is not available, the result is in the format GMT[+-]hh:mm.

Parameters
daylightTime true for daylight time, false for standard time.
style either LONG or SHORT.
locale the display locale.

public final String getDisplayName ()

Since: API Level 1

Equivalent to getDisplayName(false, TimeZone.LONG, Locale.getDefault()). Be wary of the default locale.

public final String getDisplayName (boolean daylightTime, int style)

Since: API Level 1

Equivalent to getDisplayName(daylightTime, style, Locale.getDefault()). Be wary of the default locale.

public String getID ()

Since: API Level 1

Returns the ID of this TimeZone, such as America/Los_Angeles, GMT-08:00 or UTC.

public abstract int getOffset (int era, int year, int month, int day, int dayOfWeek, int timeOfDayMillis)

Since: API Level 1

Returns this time zone's offset in milliseconds from UTC at the specified date and time. The offset includes daylight savings time if the date and time is within the daylight savings time period.

This method is intended to be used by Calendar to compute DST_OFFSET and ZONE_OFFSET. Application code should have no reason to call this method directly. Each parameter is interpreted in the same way as the corresponding Calendar field. Refer to Calendar for specific definitions of this method's parameters.

public int getOffset (long time)

Since: API Level 1

Returns the offset in milliseconds from UTC for this time zone at time. The offset includes daylight savings time if the specified date is within the daylight savings time period.

Parameters
time the date in milliseconds since January 1, 1970 00:00:00 UTC

public abstract int getRawOffset ()

Since: API Level 1

Returns the offset in milliseconds from UTC of this time zone's standard time.

public static synchronized TimeZone getTimeZone (String id)

Since: API Level 1

Returns a TimeZone suitable for id, or GMT on failure.

An id can be an Olson name of the form Area/Location, such as America/Los_Angeles. The getAvailableIDs() method returns the supported names.

This method can also create a custom TimeZone using the following syntax: GMT[+|-]hh[[:]mm]. For example, TimeZone.getTimeZone("GMT+14:00") would return an object with a raw offset of +14 hours from UTC, and which does not use daylight savings. These are rarely useful, because they don't correspond to time zones actually in use.

Other than the special cases "UTC" and "GMT" (which are synonymous in this context, both corresponding to UTC), Android does not support the deprecated three-letter time zone IDs used in Java 1.1.

public boolean hasSameRules (TimeZone timeZone)

Since: API Level 1

Returns true if timeZone has the same rules as this time zone.

The base implementation returns true if both time zones have the same raw offset.

public abstract boolean inDaylightTime (Date time)

Since: API Level 1

Returns true if time is in a daylight savings time period for this time zone.

public static synchronized void setDefault (TimeZone timeZone)

Since: API Level 1

Overrides the default time zone for the current process only.

Warning: avoid using this method to use a custom time zone in your process. This value may be cleared or overwritten at any time, which can cause unexpected behavior. Instead, manually supply a custom time zone as needed.

Parameters
timeZone a custom time zone, or null to set the default to the user's preferred value.

public void setID (String id)

Since: API Level 1

Sets the ID of this TimeZone.

public abstract void setRawOffset (int offsetMillis)

Since: API Level 1

Sets the offset in milliseconds from UTC of this time zone's standard time.

public abstract boolean useDaylightTime ()

Since: API Level 1

Returns true if this time zone has a daylight savings time period. More specifically, this method returns true to indicate that there's at least one known future transition to or from daylight savings. This means that, say, Taiwan will return false because its historical use of daylight savings doesn't count. A hypothetical country that has never observed daylight savings before but plans to start next year would return true.

If this method returns true, that only tells you that this TimeZone sometimes observes daylight savings. You need to call inDaylightTime to find out whether daylight savings is in effect.