JavaTM 2 Platform
Standard Ed. 6

java.util
類別 TimeZone

java.lang.Object
  繼承者 java.util.TimeZone
所有已實作的介面:
Serializable, Cloneable
直接已知子類別:
SimpleTimeZone

public abstract class TimeZone
extends Object
implements Serializable, Cloneable

TimeZone 表示時區偏移量,也可以計算夏令時。

通常,使用 getDefault 獲取 TimeZonegetDefault 基於程序運行所在的時區創建 TimeZone。例如,對於在日本運行的程序,getDefault 基於日本標準時間創建 TimeZone 物件。

也可以用 getTimeZone 及時區 ID 獲取 TimeZone 。例如美國太平洋時區的時區 ID 是 "America/Los_Angeles"。因此,可以使用下面語句獲得美國太平洋時間 TimeZone 物件:

 TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
 
可以使用 getAvailableIDs 方法來對所有受支持的時區 ID 進行迭代。可以選擇受支持的 ID 來獲得 TimeZone。如果想要的時區無法用受支持的 ID 之一表示,那麼可以指定自定義時區 ID 來產生 TimeZone。自定義時區 ID 的語法是:
 CustomID:
         GMT Sign Hours : Minutes
         GMT Sign Hours Minutes
         GMT Sign Hours
Sign: 下面之一
         + -
 Hours:
         Digit
         Digit Digit
 Minutes:
         Digit Digit
 Digit: 下面之一
         0 1 2 3 4 5 6 7 8 9
 
Hours 必須在 0 至 23 之間,Minutes 必須在 00 至 59 之間。例如,"GMT+10" 和 "GMT+0010" 分別意味著比 GMT 提前 10 小時和 10 分鐘。

格式是與區域無關的,並且數字必須取自 Unicode 標準的 Basic Latin 塊。沒有夏令時轉換安排可以用自定義時區 ID 指定。如果指定的字元串與語法不比對,就使用 "GMT"

當創建一個 TimeZone 時,指定的自定義時區 ID 採用下面的語法進行標準化:

 NormalizedCustomID:
         GMT Sign TwoDigitHours : Minutes
Sign: 下面之一
         + -
 TwoDigitHours:
         Digit Digit
 Minutes:
         Digit Digit
 Digit: 下面之一
         0 1 2 3 4 5 6 7 8 9
 
例如,TimeZone.getTimeZone("GMT-8").getID() 返回 "GMT-08:00"。

三字母時區 ID

為了與 JDK 1.1.x 相容,一些三字母時區 ID(比如 "PST"、"CTT"、"AST")也受支持。但是,它們的使用被廢棄,這是因為相同的縮寫經常用於多個時區(例如,"CST" 可以是美國的 "Central Standard Time" 和 "China Standard Time"),但是 Java 平臺只可以識別其中一種。

從以下版本開始:
JDK1.1
另請參見:
Calendar, GregorianCalendar, SimpleTimeZone, 序列化表格

欄位摘要
static int LONG
          指出長名稱的 getDisplayName() 的樣式說明符。
static int SHORT
          指出短名稱(比如 "PST")的 getDisplayName() 的樣式說明符。
 
建構子摘要
TimeZone()
          單獨的建構子。
 
方法摘要
 Object clone()
          創建此 TimeZone 的一個副本。
static String[] getAvailableIDs()
          獲取受支持的所有可用 ID。
static String[] getAvailableIDs(int rawOffset)
          根據給定的時區偏移量(以毫秒為單位)獲取可用的 ID。
static TimeZone getDefault()
          獲取此主機的預設 TimeZone
 String getDisplayName()
          返回適合於展示給預設區域的使用者的時區名稱。
 String getDisplayName(boolean daylight, int style)
          返回適合於展示給預設區域的使用者的時區名稱。
 String getDisplayName(boolean daylight, int style, Locale locale)
          返回適合於展示給指定區域的使用者的時區名稱。
 String getDisplayName(Locale locale)
          返回適合於展示給指定區域的使用者的時區名稱。
 int getDSTSavings()
          返回要添加到本地標準時間以獲取本地掛鐘時間的時間量。
 String getID()
          獲取此時區的 ID。
abstract  int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds)
          獲取當前日期的時區偏移量(在夏令時情況下進行修改)。
 int getOffset(long date)
          從給定日期的 UTC 返回此時區的偏移量。
abstract  int getRawOffset()
          返回添加到 UTC 以獲取此時區中的標準時間的時間量(以毫秒為單位)。
static TimeZone getTimeZone(String ID)
          獲取給定 ID 的 TimeZone
 boolean hasSameRules(TimeZone other)
          如果此區域和另一個區域具有相同的規則和偏移量,也就是說,如果此區域只可能在 ID 上與另一個區域不同,則返回 true。
abstract  boolean inDaylightTime(Date date)
          查詢給定的日期是否在此時區的夏令時中。
static void setDefault(TimeZone zone)
          設置由 getDefault 方法返回的 TimeZone
 void setID(String ID)
          設置時區 ID。
abstract  void setRawOffset(int offsetMillis)
          把基準時區偏移量設置到 GMT。
abstract  boolean useDaylightTime()
          查詢此時區是否使用夏令時。
 
從類別 java.lang.Object 繼承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

SHORT

public static final int SHORT
指出短名稱(比如 "PST")的 getDisplayName() 的樣式說明符。

從以下版本開始:
1.2
另請參見:
LONG, 常數欄位值

LONG

public static final int LONG
指出長名稱的 getDisplayName() 的樣式說明符。

從以下版本開始:
1.2
另請參見:
SHORT, 常數欄位值
建構子詳細資訊

TimeZone

public TimeZone()
單獨的建構子。(由子類別建構子調用,通常是隱式的。)

方法詳細資訊

getOffset

public abstract int getOffset(int era,
                              int year,
                              int month,
                              int day,
                              int dayOfWeek,
                              int milliseconds)
獲取當前日期的時區偏移量(在夏令時情況下進行修改)。這是添加到 UTC 獲取本地時間的偏移量。

如果底層 TimeZone 實作子類別支持歷史夏令時安排和 GMT 偏移量改變,那麼此方法就返回歷史上正確的偏移量。

參數:
era - 給定日期的年代。
year - 給定日期的年份。
month - 給定日期的月份。月份是從 0 開始的,比如 0 代表一月。
day - 給定日期的月份中的某一天。
dayOfWeek - 給定日期的一周中的某一天。
milliseconds - 標準 本地時間中天的毫秒數。
返回:
添加到 GMT 以獲取本地時間的偏移量(以毫秒計)。
另請參見:
Calendar.ZONE_OFFSET, Calendar.DST_OFFSET

getOffset

public int getOffset(long date)
從給定日期的 UTC 返回此時區的偏移量。如果夏令時在指定的日期是有效的,就用夏令時調整偏移值。

如果底層 TimeZone 實作子類別支持歷史夏令時安排和 GMT 偏移量改變,那麼此方法就返回歷史上正確的偏移值。

參數:
date - 自 1970 年 1 月 1 日 00:00:00 GMT 以來以毫秒表示的日期
返回:
添加到 UTC 以獲取本地時間的時間量(以毫秒為單位)。
從以下版本開始:
1.4
另請參見:
Calendar.ZONE_OFFSET, Calendar.DST_OFFSET

setRawOffset

public abstract void setRawOffset(int offsetMillis)
把基準時區偏移量設置到 GMT。這是添加到 UTC 以獲取本地時間的偏移量。

如果底層 TimeZone 實作子類別支持歷史 GMT 偏移量更改,那麼指定的 GMT 偏移量被設置為最後的 GMT 偏移量,並通過與已知的最近 GMT 偏移值的差別對所有歷史 GMT 偏移值進行調整。

參數:
offsetMillis - GMT 的給定基準時區偏移量。

getRawOffset

public abstract int getRawOffset()
返回添加到 UTC 以獲取此時區中的標準時間的時間量(以毫秒為單位)。因為此值不受夏令時的影響,所以它稱為原始偏移量

如果底層 TimeZone 實作子類別支持歷史 GMT 的偏移量變化,那麼此方法返回當前日期的原始偏移量值。例如,在火奴魯魯(美國夏威夷州的首府和港市),它的原始偏移量在 1947 年從 GMT-10:30 改變到 GMT-10:00,並且此方法始終返回 -36000000 毫秒(即 -10 小時)。

返回:
添加到 UTC 的原始偏移時間量(以毫秒為單位)。
另請參見:
Calendar.ZONE_OFFSET

getID

public String getID()
獲取此時區的 ID。

返回:
此時區的 ID。

setID

public void setID(String ID)
設置時區 ID。這不會改變時區物件中的任何其他資料。

參數:
ID - 新的時區 ID。

getDisplayName

public final String getDisplayName()
返回適合於展示給預設區域的使用者的時區名稱。此方法返回長名稱,不包括夏令時。如果顯示名稱對於區域不可用,那麼此方法以標準化自定義 ID 格式返回一個字元串。

返回:
預設區域中時區的可讀名稱。
從以下版本開始:
1.2

getDisplayName

public final String getDisplayName(Locale locale)
返回適合於展示給指定區域的使用者的時區名稱。此方法返回長名稱,不包括夏令時。如果顯示名稱對於區域不可用,那麼此方法以標準化自定義 ID 格式返回一個字元串。

參數:
locale - 要提供顯示名稱的區域。
返回:
給定區域中時區的可讀名稱。
從以下版本開始:
1.2

getDisplayName

public final String getDisplayName(boolean daylight,
                                   int style)
返回適合於展示給預設區域的使用者的時區名稱。如果顯示名稱對於區域不可用,那麼此方法以標準化自定義 ID 格式返回一個字元串。

參數:
daylight - 如果為 true,則返回夏令時名稱。
style - LONGSHORT
返回:
預設區域中時區的可讀名稱。
從以下版本開始:
1.2

getDisplayName

public String getDisplayName(boolean daylight,
                             int style,
                             Locale locale)
返回適合於展示給指定區域的使用者的時區名稱。如果顯示名稱對於區域不可用,那麼此方法以標準化自定義 ID 格式返回一個字元串。

參數:
daylight - 如果為 true,返回夏令時名稱。
style - LONGSHORT
locale - 要提供顯示名稱的區域。
返回:
給定區域中時區的可讀名稱。
拋出:
IllegalArgumentException - 樣式是無效的。
從以下版本開始:
1.2

getDSTSavings

public int getDSTSavings()
返回要添加到本地標準時間以獲取本地掛鐘時間的時間量。

如果此時區遵守夏令時規則,則預設的實作始終返回 3600000 毫秒(即 1 小時)。否則,返回 0(零)。

如果底層 TimeZone 實作子類別支持歷史夏令時變化,則此方法返回已知的最新夏令時值。

返回:
節約的時間量(以毫秒為單位)
從以下版本開始:
1.4

useDaylightTime

public abstract boolean useDaylightTime()
查詢此時區是否使用夏令時。

如果底層 TimeZone 實作子類別支持歷史夏令時安排變化,那麼方法參考最新的夏令時安排資訊。

返回:
如果此時區使用夏令時,則返回 true,否則返回 false。

inDaylightTime

public abstract boolean inDaylightTime(Date date)
查詢給定的日期是否在此時區的夏令時中。

參數:
date - 給定的日期。
返回:
如果給定的日期在夏令時中,則返回 true,否則返回 false。

getTimeZone

public static TimeZone getTimeZone(String ID)
獲取給定 ID 的 TimeZone

參數:
ID - TimeZone 的 ID,要麼是縮寫(如 "PST" ),要麼是全名(如 "America/Los_Angeles"),要麼是自定義 ID(如 "GMT-8:00")。注意,對縮寫的支持只是出於 JDK 1.1.x 相容性的考慮,因此應該使用全名。
返回:
指定的 TimeZone,如果給定的 ID 無法理解,則返回 GMT 區域。

getAvailableIDs

public static String[] getAvailableIDs(int rawOffset)
根據給定的時區偏移量(以毫秒為單位)獲取可用的 ID。

參數:
rawOffset - 給定的時區 GMT 偏移量(以毫秒為單位)。
返回:
一組 ID,其中該 ID 時區具有指定的 GMT 偏移量。例如,"America/Phoenix" 和 "America/Denver" 都有 GMT-07:00,但其夏令時行為是不同的。

getAvailableIDs

public static String[] getAvailableIDs()
獲取受支持的所有可用 ID。

返回:
一組 ID。

getDefault

public static TimeZone getDefault()
獲取此主機的預設 TimeZone。預設 TimeZone 的來源可能隨實作的變化而變化。

返回:
預設的 TimeZone
另請參見:
setDefault(java.util.TimeZone)

setDefault

public static void setDefault(TimeZone zone)
設置由 getDefault 方法返回的 TimeZone。如果 zone 為 null,把預設值重設為第一次啟動虛擬機器時的最初值。

參數:
zone - 新的預設時區
另請參見:
getDefault()

hasSameRules

public boolean hasSameRules(TimeZone other)
如果此區域和另一個區域具有相同的規則和偏移量,也就是說,如果此區域只可能在 ID 上與另一個區域不同,則返回 true。如果其他區域為 null,則返回 false。

參數:
other - 要進行比較的 TimeZone 物件
返回:
如果其他區域不為 null,並且與此區域不同(可能只有 ID 不同),則返回 true
從以下版本開始:
1.2

clone

public Object clone()
創建此 TimeZone 的一個副本。

覆寫:
類別 Object 中的 clone
返回:
TimeZone 的一個副本
另請參見:
Cloneable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only