鴻蒙OS TimeZone

2022-08-09 16:10 更新

TimeZone

java.lang.Object

|---java.util.TimeZone

public abstract class TimeZone
extends Object
implements Serializable, Cloneable

TimeZone 表示時區(qū)偏移量,也計算夏令時。

通常,您使用 getDefault 獲得一個 TimeZone,它根據(jù)程序運(yùn)行的時區(qū)創(chuàng)建一個 TimeZone。 例如,對于在日本運(yùn)行的程序,getDefault 根據(jù)日本標(biāo)準(zhǔn)時間創(chuàng)建一個 TimeZone 對象。

您還可以使用 getTimeZone 和時區(qū) ID 獲取 TimeZone。 例如,美國太平洋時區(qū)的時區(qū) ID 是“America/Los_Angeles”。 因此,您可以通過以下方式獲取美國太平洋時間 TimeZone 對象:

 TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); 

您可以使用 getAvailableIDs 方法遍歷所有受支持的時區(qū) ID。 然后,您可以選擇支持的 ID 來獲取 TimeZone。 如果您想要的時區(qū)不是由受支持的 ID 之一表示,則可以指定自定義時區(qū) ID 以生成 TimeZone。 自定義時區(qū) ID 的語法是:

 CustomID:
         GMT Sign Hours : Minutes
         GMT Sign Hours Minutes
         GMT Sign Hours
 Sign: one of
         + -
 Hours:
         Digit
         Digit Digit
 Minutes:
         Digit Digit
 Digit: one of
         0 1 2 3 4 5 6 7 8 9

小時必須介于 0 到 23 之間,分鐘必須介于 00 到 59 之間。例如,“GMT+10”和“GMT+0010”分別表示比 GMT 提前十小時和十分鐘。

格式與區(qū)域無關(guān),數(shù)字必須取自 Unicode 標(biāo)準(zhǔn)的基本拉丁語塊。 不能使用自定義時區(qū) ID 指定夏令時轉(zhuǎn)換計劃。 如果指定的字符串與語法不匹配,則使用“GMT”。

創(chuàng)建 TimeZone 時,指定的自定義時區(qū) ID 以以下語法規(guī)范化:

 NormalizedCustomID:
         GMT Sign TwoDigitHours : Minutes
 Sign: one of
         + -
 TwoDigitHours:
         Digit Digit
 Minutes:
         Digit Digit
 Digit: one of
         0 1 2 3 4 5 6 7 8 9

例如,TimeZone.getTimeZone("GMT-8").getID() 返回“GMT-08:00”。 三字母時區(qū) ID 為了與 JDK 1.1.x 兼容,還支持其他一些三字母時區(qū) ID(例如“PST”、“CTT”、“AST”)。 但是,不推薦使用它們,因為相同的縮寫通常用于多個時區(qū)(例如,“CST”可能是美國“中部標(biāo)準(zhǔn)時間”和“中國標(biāo)準(zhǔn)時間”),Java 平臺只能識別其中之一 他們。

字段摘要

修飾符和類型 字段 描述
static int LONG getDisplayName() 的樣式說明符,指示長名稱,例如“太平洋標(biāo)準(zhǔn)時間”。
static int SHORT getDisplayName() 的樣式說明符,指示短名稱,例如“PST”。

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
TimeZone() 唯一的構(gòu)造函數(shù)

方法總結(jié)

修飾符和類型 方法 描述
Object clone() 創(chuàng)建此 TimeZone 的副本。
static String[] getAvailableIDs() 獲取支持的所有可用 ID。
static String[] getAvailableIDs(int rawOffset) 根據(jù)給定的時區(qū)偏移量獲取可用的 ID,以毫秒為單位。
static TimeZone getDefault() 獲取 Java 虛擬機(jī)的默認(rèn)時區(qū)。
String getDisplayName() 返回此 TimeZone 的長標(biāo)準(zhǔn)時間名稱,適合在默認(rèn)語言環(huán)境中呈現(xiàn)給用戶。
String getDisplayName(boolean daylight, int style) 返回此 TimeZone 的指定樣式的名稱,該名稱適合在默認(rèn)語言環(huán)境中呈現(xiàn)給用戶。
String getDisplayName(boolean daylight, int style, Locale locale) 返回此 TimeZone 的指定樣式的名稱,該名稱適合在指定區(qū)域設(shè)置中呈現(xiàn)給用戶。
String getDisplayName(Locale locale) 返回此 TimeZone 的長標(biāo)準(zhǔn)時間名稱,適合在指定區(qū)域設(shè)置中呈現(xiàn)給用戶。
int getDSTSavings() 返回要添加到本地標(biāo)準(zhǔn)時間以獲取本地掛鐘時間的時間量。
String getID() 獲取該時區(qū)的 ID。
abstract int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) 獲取當(dāng)前日期的時區(qū)偏移量,在夏令時的情況下進(jìn)行修改。
int getOffset(long date) 返回此時區(qū)在指定日期與 UTC 的偏移量。
abstract int getRawOffset() 返回添加到 UTC 以獲取此時區(qū)的標(biāo)準(zhǔn)時間的時間量(以毫秒為單位)。
static TimeZone getTimeZone(String ID) 獲取給定 ID 的時區(qū)。
static TimeZone getTimeZone(ZoneId zoneId) 獲取給定 zoneId 的 TimeZone。
boolean hasSameRules(TimeZone other) 如果此區(qū)域與另一個區(qū)域具有相同的規(guī)則和偏移量,則返回 true。
abstract boolean inDaylightTime(Date date) 查詢給定日期是否在該時區(qū)的夏令時。
boolean observesDaylightTime() 如果此 TimeZone 當(dāng)前處于夏令時,或者如果在將來的任何時間發(fā)生從標(biāo)準(zhǔn)時間到夏令時的轉(zhuǎn)換,則返回 true。
static void setDefault(TimeZone zone) 設(shè)置由 getDefault 方法返回的 TimeZone。
void setID(String ID) 設(shè)置時區(qū) ID。
abstract void setRawOffset(int offsetMillis) 將基準(zhǔn)時區(qū)偏移設(shè)置為 GMT。
ZoneId toZoneId() 將此 TimeZone 對象轉(zhuǎn)換為 ZoneId。
abstract boolean useDaylightTime() 查詢此 TimeZone 是否使用夏令時。
從類 java.lang.Object 繼承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段詳細(xì)信息

LONG

public static final int LONG

getDisplayName() 的樣式說明符,指示長名稱,例如“太平洋標(biāo)準(zhǔn)時間”。

SHORT

public static final int SHORT

getDisplayName() 的樣式說明符,指示短名稱,例如“PST”。

構(gòu)造函數(shù)詳細(xì)信息

TimeZone

public TimeZone()

唯一的構(gòu)造函數(shù)。 (用于子類構(gòu)造函數(shù)的調(diào)用,通常是隱式的。)

方法詳情

getOffset

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

獲取當(dāng)前日期的時區(qū)偏移量,在夏令時的情況下進(jìn)行修改。 這是添加到 UTC 以獲取本地時間的偏移量。

如果基礎(chǔ) TimeZone 實現(xiàn)子類支持歷史夏令時時間表和 GMT 偏移更改,則此方法返回歷史正確偏移。

參數(shù):

參數(shù)名稱 參數(shù)描述
era 給定日期的時代。
year 給定日期的年份。
month 給定日期的月份。 月份是從 0 開始的。 例如,0 表示一月。
day 給定日期的月份中的某一天。
dayOfWeek 給定日期的星期幾。
milliseconds 標(biāo)準(zhǔn)本地時間的毫秒數(shù)。

返回:

添加到 GMT 以獲取本地時間的偏移量(以毫秒為單位)。

getOffset

public int getOffset(long date)

返回此時區(qū)在指定日期與 UTC 的偏移量。 如果夏令時在指定日期生效,則偏移值會根據(jù)夏令時進(jìn)行調(diào)整。

如果基礎(chǔ) TimeZone 實現(xiàn)子類支持歷史夏令時時間表和 GMT 偏移更改,則此方法返回歷史正確偏移值。

參數(shù):

參數(shù)名稱 參數(shù)描述
date 自 1970 年 1 月 1 日 00:00:00 GMT 以來以毫秒為單位的日期

返回:

添加到 UTC 以獲取本地時間的時間量(以毫秒為單位)。

setRawOffset

public abstract void setRawOffset(int offsetMillis)

將基準(zhǔn)時區(qū)偏移設(shè)置為 GMT。 這是添加到 UTC 以獲取本地時間的偏移量。

如果底層 TimeZone 實現(xiàn)子類支持歷史 GMT 偏移量更改,則將指定的 GMT 偏移量設(shè)置為最新的 GMT 偏移量,并使用與已知的最新 GMT 偏移量值的差值來調(diào)整所有歷史 GMT 偏移量值。

參數(shù):

參數(shù)名稱 參數(shù)描述
offsetMillis 給定的基準(zhǔn)時區(qū)偏移到 GMT。

getRawOffset

public abstract int getRawOffset()

返回添加到 UTC 以獲取此時區(qū)的標(biāo)準(zhǔn)時間的時間量(以毫秒為單位)。 因為這個值不受夏令時影響,所以稱為原始偏移量。

如果底層 TimeZone 實現(xiàn)子類支持歷史 GMT 偏移更改,則該方法返回當(dāng)前日期的原始偏移值。 例如,在檀香山,其原始偏移量在 1947 年從 GMT-10:30 更改為 GMT-10:00,并且此方法始終返回 -36000000 毫秒(即 -10 小時)。

返回:

添加到 UTC 的原始偏移時間量(以毫秒為單位)。

getID

public String getID()

獲取該時區(qū)的 ID。

返回:

這個時區(qū)的ID。

setID

public void setID(String ID)

設(shè)置時區(qū) ID。 這不會更改時區(qū)對象中的任何其他數(shù)據(jù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
ID 新時區(qū) ID。

getDisplayName

public final String getDisplayName()

返回此 TimeZone 的長標(biāo)準(zhǔn)時間名稱,適合在默認(rèn)語言環(huán)境中呈現(xiàn)給用戶。

該方法等價于:

 getDisplayName(false, LONG,
                Locale.getDefault(Locale.Category#DISPLAY))

返回:

此時區(qū)在默認(rèn)語言環(huán)境中的可讀名稱。

getDisplayName

public final String getDisplayName(Locale locale)

返回此 TimeZone 的長標(biāo)準(zhǔn)時間名稱,適合在指定區(qū)域設(shè)置中呈現(xiàn)給用戶。

該方法等價于:

 getDisplayName(false, LONG, locale) 

參數(shù):

參數(shù)名稱 參數(shù)描述
locale 提供顯示名稱的語言環(huán)境。

返回:

此時區(qū)在給定語言環(huán)境中的可讀名稱。

Throws:

Throw名稱 Throw描述
NullPointerException 如果 locale 為空

getDisplayName

public final String getDisplayName(boolean daylight, int style)

返回此 TimeZone 的指定樣式的名稱,該名稱適合在默認(rèn)語言環(huán)境中呈現(xiàn)給用戶。 如果指定的日光為真,則返回夏令時名稱(即使此 TimeZone 不遵守夏令時)。 否則,返回標(biāo)準(zhǔn)時間名稱。

該方法等價于:

 getDisplayName(daylight, style,
                Locale.getDefault(Locale.Category#DISPLAY))

參數(shù):

參數(shù)名稱 參數(shù)描述
daylight true 指定夏令時名稱,或 false 指定標(biāo)準(zhǔn)時間名稱
style 長或短

返回:

此時區(qū)在默認(rèn)語言環(huán)境中的可讀名稱。

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 style 無效

getDisplayName

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

返回此 TimeZone 的指定樣式的名稱,該名稱適合在指定區(qū)域設(shè)置中呈現(xiàn)給用戶。 如果指定的日光為真,則返回夏令時名稱(即使此 TimeZone 不遵守夏令時)。 否則,返回標(biāo)準(zhǔn)時間名稱。

查找時區(qū)名稱時,使用從指定語言環(huán)境派生的 ResourceBundle.Control#getCandidateLocales(String,Locale)。 (不執(zhí)行 ResourceBundle.Control#getFallbackLocale(String,Locale) 搜索。)如果在搜索路徑的任何 Locale 中找到時區(qū)名稱,包括 Locale#ROOT,則返回該名稱。 否則,返回標(biāo)準(zhǔn)化自定義 ID 格式的字符串。

參數(shù):

參數(shù)名稱 參數(shù)描述
daylight true 指定夏令時名稱,或 false 指定標(biāo)準(zhǔn)時間名稱
style 長或短
locale 提供顯示名稱的語言環(huán)境。

返回:

此時區(qū)在給定語言環(huán)境中的可讀名稱。

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 style 無效
NullPointerException 如果 locale 為空

getDSTSavings

public int getDSTSavings()

返回要添加到本地標(biāo)準(zhǔn)時間以獲取本地掛鐘時間的時間量。

如果對 useDaylightTime() 的調(diào)用返回 true,則默認(rèn)實現(xiàn)返回 3600000 毫秒(即一小時)。 否則,返回 0(零)。

如果底層 TimeZone 實現(xiàn)子類支持歷史和未來夏令時計劃更改,則此方法返回可以作為未來預(yù)測的最后一個已知夏令時規(guī)則的節(jié)省時間量。

如果需要任何給定時間戳的節(jié)省時間量,請使用此 TimeZone 和時間戳構(gòu)造一個日歷,并調(diào)用 Calendar#get(int)(Calendar#DST_OFFSET)。

返回:

以毫秒為單位的節(jié)省時間

useDaylightTime

public abstract boolean useDaylightTime()

查詢此 TimeZone 是否使用夏令時。

如果底層 TimeZone 實現(xiàn)子類支持歷史和未來的夏令時時間表更改,則此方法引用最后一個已知的夏令時規(guī)則,該規(guī)則可以是未來的預(yù)測,并且可能與當(dāng)前規(guī)則不同。 如果還應(yīng)考慮當(dāng)前規(guī)則,請考慮調(diào)用observesDaylightTime()。

返回:

如果此 TimeZone 使用夏令時,則為 true,否則為 false。

observesDaylightTime

public boolean observesDaylightTime()

如果此 TimeZone 當(dāng)前處于夏令時,或者如果在將來的任何時間發(fā)生從標(biāo)準(zhǔn)時間到夏令時的轉(zhuǎn)換,則返回 true。

如果 useDaylightTime() 或 inDaylightTime(new Date()) 返回 true,則默認(rèn)實現(xiàn)返回 true。

返回:

如果此 TimeZone 當(dāng)前處于夏令時,或者如果在未來任何時間發(fā)生從標(biāo)準(zhǔn)時間到夏令時的轉(zhuǎn)換,則為 true; 否則為 false。

inDaylightTime

public abstract boolean inDaylightTime(Date date)

查詢給定日期是否在該時區(qū)的夏令時。

參數(shù):

參數(shù)名稱 參數(shù)描述
date 給定的日期。

返回:

如果給定日期在夏令時,則為 true,否則為 false。

getTimeZone

public static TimeZone getTimeZone(String ID)

獲取給定 ID 的時區(qū)。

參數(shù):

參數(shù)名稱 參數(shù)描述
ID TimeZone 的 ID,可以是“PST”等縮寫、“America/Los_Angeles”等全名或“GMT-8:00”等自定義 ID。 請注意,支持縮寫僅是為了兼容 JDK 1.1.x,應(yīng)使用全名。

返回:

指定的時區(qū),如果無法理解給定的 ID,則為 GMT 時區(qū)。

getTimeZone

public static TimeZone getTimeZone(ZoneId zoneId)

獲取給定 zoneId 的 TimeZone。

參數(shù):

參數(shù)名稱 參數(shù)描述
zoneId 從中獲取時區(qū) ID 的 ZoneId

返回:

指定的時區(qū),如果無法理解給定的 ID,則為 GMT 時區(qū)。

Throws:

Throw名稱 Throw描述
NullPointerException 如果 zoneId 為空

toZoneId

public ZoneId toZoneId()

將此 TimeZone 對象轉(zhuǎn)換為 ZoneId。

返回:

表示與此 TimeZone 相同時區(qū)的 ZoneId

getAvailableIDs

public static String[] getAvailableIDs(int rawOffset)

根據(jù)給定的時區(qū)偏移量獲取可用的 ID,以毫秒為單位。

參數(shù):

參數(shù)名稱 參數(shù)描述
rawOffset 給定的時區(qū) GMT 偏移量(以毫秒為單位)。

返回:

一個 ID 數(shù)組,其中該 ID 的時區(qū)具有指定的 GMT 偏移量。 例如,“America/Phoenix”和“America/Denver”都有 GMT-07:00,但夏令時行為不同。

getAvailableIDs

public static String[] getAvailableIDs()

獲取支持的所有可用 ID。

返回:

一個 ID 數(shù)組。

getDefault

public static TimeZone getDefault()

獲取 Java 虛擬機(jī)的默認(rèn)時區(qū)。 如果緩存的默認(rèn) TimeZone 可用,則返回其克隆。 否則,該方法采取以下步驟來確定默認(rèn)時區(qū)。

  • 使用 user.timezone 屬性值作為默認(rèn)時區(qū) ID(如果可用)。
  • 檢測平臺時區(qū) ID。 平臺時區(qū)和 ID 映射的來源可能因?qū)崿F(xiàn)而異。
  • 如果給定或檢測到的時區(qū) ID 未知,則使用 GMT 作為最后的手段。

從 ID 創(chuàng)建的默認(rèn) TimeZone 被緩存,并返回其克隆。 user.timezone 屬性值在返回時設(shè)置為 ID。

返回:

默認(rèn)時區(qū)

setDefault

public static void setDefault(TimeZone zone)

設(shè)置由 getDefault 方法返回的 TimeZone。 區(qū)域被緩存。 如果 zone 為 null,則清除緩存的默認(rèn) TimeZone。 此方法不會更改 user.timezone 屬性的值。

參數(shù):

參數(shù)名稱 參數(shù)描述
zone 新的默認(rèn)時區(qū),或 null

Throws:

Throw名稱 Throw描述
SecurityException 如果安全管理器的 checkPermission 拒絕 PropertyPermission("user.timezone", "write")

hasSameRules

public boolean hasSameRules(TimeZone other)

如果此區(qū)域與另一個區(qū)域具有相同的規(guī)則和偏移量,則返回 true。 也就是說,如果該區(qū)域僅在 ID 上有所不同,如果有的話。 如果其他區(qū)域為空,則返回 false。

參數(shù):

參數(shù)名稱 參數(shù)描述
other 要與之比較的 TimeZone 對象

返回:

如果另一個區(qū)域不為空且與此區(qū)域相同,則為 true,ID 可能除外

clone

public Object clone()

創(chuàng)建此 TimeZone 的副本。

覆蓋:

在類 Object 中克隆

返回:

此 TimeZone 的克隆

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號