- 所有已实现的接口:
Serializable,Cloneable
- 已知子类:
SimpleTimeZone
TimeZone 表示时区偏移量,也计算夏令时。
通常,您使用 getDefault 得到一个 TimeZone,它根据程序运行的时区创建一个 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 的语法是:
小时必须介于 0 到 23 之间分钟/秒必须在 00 到 59 之间。例如,“GMT+10”和“GMT+0010”分别表示比 GMT 早 10 小时和 10 分钟。CustomID:GMTSign Hours:Minutes:SecondsGMTSign Hours:MinutesGMTSign Hours MinutesGMTSign Hours Sign: one of+ -Hours: Digit Digit Digit Minutes: Digit Digit Seconds: Digit Digit Digit: one of0 1 2 3 4 5 6 7 8 9
格式与locale无关,数字必须取自 Unicode 标准的基本拉丁语块。不能使用自定义时区 ID 指定夏令时转换计划。如果指定的字符串与语法不匹配,则使用 "GMT"。
创建 TimeZone 时,指定的自定义时区 ID 以以下语法规范化:
例如,TimeZone.getTimeZone("GMT-8").getID() 返回“GMT-08:00”。ColonSeconds部分仅在秒值不为零时出现。NormalizedCustomID:GMTSign TwoDigitHours:Minutes [ColonSeconds] Sign: one of+ -TwoDigitHours: Digit Digit Minutes: Digit Digit ColonSeconds::Digit Digit Digit: one of0 1 2 3 4 5 6 7 8 9
三字母时区 ID
为了与 JDK 1.1.x 兼容,还支持其他一些三字母时区 ID(例如“PST”、“CTT”、“AST”)。但是,their use is deprecated因为同一个缩写经常用于多个时区(例如,“CST”可能是美国的“Central Standard Time”和“China Standard Time”),Java 平台只能识别其中一个。- 自从:
- 1.1
- 参见:
-
字段摘要
字段 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述clone()创建此TimeZone的副本。static String[]获取支持的所有可用 ID。static String[]getAvailableIDs(int rawOffset) 根据给定的时区偏移量(以毫秒为单位)获取可用 ID。static TimeZone获取 Java 虚拟机的默认TimeZone。final String返回此TimeZone的长标准时间名称,适合在默认区域设置中呈现给用户。final StringgetDisplayName(boolean daylight, int style) 返回此TimeZone的指定style中的名称,适合在默认locale中向用户展示。getDisplayName(boolean daylight, int style, Locale locale) 返回此TimeZone的指定style中适合呈现给指定locale中的用户的名称。final StringgetDisplayName(Locale locale) 返回此TimeZone的长标准时间名称,适合在指定的locale中呈现给用户。int返回要添加到本地标准时间以获得本地挂钟时间的时间量。getID()获取该时区的ID。abstract intgetOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) 获取当前日期的时区偏移量,在夏令时的情况下进行修改。intgetOffset(long date) 返回指定日期时区与 UTC 的偏移量。abstract int返回添加到 UTC 以获取此时区标准时间的时间量(以毫秒为单位)。static TimeZonegetTimeZone(String ID) 获取给定 ID 的TimeZone。static TimeZonegetTimeZone(ZoneId zoneId) 获取给定zoneId的TimeZone。booleanhasSameRules(TimeZone other) 如果此区域与另一个区域具有相同的规则和偏移量,则返回 true。abstract booleaninDaylightTime(Date date) 查询给定的date是否处于该时区的夏令时。boolean如果此TimeZone当前处于夏令时,或者如果在未来任何时间发生从标准时间到夏令时的转换,则返回true。static voidsetDefault(TimeZone zone) 设置由getDefault方法返回的TimeZone。void设置时区 ID。abstract voidsetRawOffset(int offsetMillis) 将基准时区偏移量设置为 GMT。toZoneId()将此TimeZone对象转换为ZoneId。abstract boolean查询此TimeZone是否使用夏令时。
-
字段详细信息
-
SHORT
public static final int SHORTgetDisplayName()的样式说明符,指示短名称,例如“PST”。- 自从:
- 1.2
- 参见:
-
LONG
public static final int LONGgetDisplayName()的样式说明符,指示长名称,例如“太平洋标准时间”。- 自从:
- 1.2
- 参见:
-
-
构造方法详细信息
-
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- 当地时间 standard 中一天中的毫秒数。- 返回:
- 添加到 GMT 以获取当地时间的偏移量(以毫秒为单位)。
- 参见:
-
getOffset
public int getOffset(long date) 返回指定日期时区与 UTC 的偏移量。如果夏令时在指定日期生效,则偏移值会根据夏令时的长短进行调整。如果底层 TimeZone 实现子类支持历史夏令时计划和 GMT 偏移更改,则此方法返回历史上正确的偏移值。
- 参数:
date- 自格林威治标准时间 1970 年 1 月 1 日 00:00:00 以来以毫秒表示的日期- 返回:
- 添加到 UTC 以获取本地时间的时间量(以毫秒为单位)。
- 自从:
- 1.4
- 参见:
-
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 的原始偏移时间量(以毫秒为单位)。
- 参见:
-
getID
获取该时区的ID。- 返回:
- 这个时区的ID。
-
setID
设置时区 ID。这不会更改时区对象中的任何其他数据。- 参数:
ID- 新时区 ID。
-
getDisplayName
返回此TimeZone的长标准时间名称,适合在默认区域设置中呈现给用户。此方法等效于:
getDisplayName(false,
LONG, Locale.getDefault(Locale.Category.DISPLAY))- 返回:
- 默认locale中此时区的人类可读名称。
- 自从:
- 1.2
- 参见:
-
getDisplayName
- 参数:
locale- 提供显示名称的locale。- 返回:
- 给定locale中此时区的人类可读名称。
- 抛出:
NullPointerException- 如果locale是null。- 自从:
- 1.2
- 参见:
-
getDisplayName
返回此TimeZone的指定style中的名称,适合在默认locale中向用户展示。如果指定的daylight是true,则返回夏令时名称(即使此TimeZone不遵守夏令时)。否则,返回标准时间名称。此方法等效于:
getDisplayName(daylight, style, Locale.getDefault(Locale.Category.DISPLAY))- 参数:
daylight-true指定夏令时名称,或false指定标准时间名称style-LONG或SHORT- 返回:
- 默认locale中此时区的人类可读名称。
- 抛出:
IllegalArgumentException- 如果style无效。- 自从:
- 1.2
- 参见:
-
getDisplayName
返回此TimeZone的指定style中适合呈现给指定locale中的用户的名称。如果指定的daylight是true,则返回夏令时名称(即使此TimeZone不遵守夏令时)。否则,返回标准时间名称。查找时区名称时,使用从指定的
locale派生的ResourceBundle的默认Locale搜索路径。 (不执行 fallbackLocale搜索。)如果在搜索路径的任何Locale中找到时区名称,包括Locale.ROOT,则返回该名称。否则,返回 规范化自定义 ID 格式 中的字符串。- 参数:
daylight-true指定夏令时名称,或false指定标准时间名称style-LONG或SHORTlocale- 提供显示名称的locale。- 返回:
- 给定locale中此时区的人类可读名称。
- 抛出:
IllegalArgumentException- 如果style无效。NullPointerException- 如果locale是null。- 自从:
- 1.2
- 参见:
-
getDSTSavings
public int getDSTSavings()返回要添加到本地标准时间以获得本地挂钟时间的时间量。如果对
useDaylightTime()的调用返回true,则默认实现返回 3600000 毫秒(即一小时)。否则,返回 0(零)。如果底层
TimeZone实现子类支持历史和未来的夏令时计划更改,则此方法返回可以作为未来预测的最后已知夏令时规则的节约时间量。如果需要任何给定时间戳的节省时间量,请使用此
TimeZone和时间戳构造一个Calendar,并调用Calendar.get(Calendar.DST_OFFSET)。- 返回:
- 以毫秒为单位的节省时间
- 自从:
- 1.4
- 参见:
-
useDaylightTime
public abstract boolean useDaylightTime()查询此TimeZone是否使用夏令时。如果底层
TimeZone实现子类支持历史和未来的夏令时时间表更改,则此方法引用最后已知的夏令时规则,该规则可以是未来的预测并且可能与当前规则不同。如果还应考虑当前规则,请考虑调用observesDaylightTime()。- 返回:
true如果此TimeZone使用夏令时,false否则。- 参见:
-
observesDaylightTime
public boolean observesDaylightTime()如果此TimeZone当前处于夏令时,或者如果在未来任何时间发生从标准时间到夏令时的转换,则返回true。如果
useDaylightTime()或inDaylightTime(new Date())返回true,则默认实现返回true。- 返回:
true如果这个TimeZone当前处于夏令时,或者如果在未来的任何时间从标准时间过渡到夏令时;false否则。- 自从:
- 1.7
- 参见:
-
inDaylightTime
查询给定的date是否处于该时区的夏令时。- 参数:
date- 给定的日期。- 返回:
true如果给定日期在夏令时,则false否则。
-
getTimeZone
获取给定 ID 的TimeZone。- 参数:
ID-TimeZone的 ID,可以是缩写(例如“PST”)、全名(例如“America/Los_Angeles”)或自定义 ID(例如“GMT-8:00”)。请注意,缩写的支持只是为了与 JDK 1.1.x 兼容,应该使用全名。- 返回:
-
指定的
TimeZone,如果给定的 ID 无法理解,则为 GMT 时区。
-
getTimeZone
获取给定zoneId的TimeZone。- 参数:
zoneId- 从中获取时区 ID 的ZoneId- 返回:
-
指定的
TimeZone,如果给定的 ID 无法理解,则为 GMT 时区。 - 抛出:
NullPointerException- 如果zoneId是null- 自从:
- 1.8
-
toZoneId
将此TimeZone对象转换为ZoneId。- 返回:
-
一个
ZoneId表示与这个TimeZone相同的时区 - 自从:
- 1.8
-
getAvailableIDs
根据给定的时区偏移量(以毫秒为单位)获取可用 ID。- 参数:
rawOffset- 以毫秒为单位的给定时区 GMT 偏移量。- 返回:
- ID 数组,其中该 ID 的时区具有指定的 GMT 偏移量。例如,“America/Phoenix”和“America/Denver”都有 GMT-07:00,但夏令时行为不同。
- 参见:
-
getAvailableIDs
获取支持的所有可用 ID。- 返回:
- ID 数组。
-
getDefault
获取 Java 虚拟机的默认TimeZone。如果缓存的默认TimeZone可用,则返回其克隆。否则,该方法采取以下步骤来确定默认时区。- 如果可用,请使用
user.timezone属性值作为默认时区 ID。 - 检测平台时区 ID。平台时区和 ID 映射的来源可能因实现而异。
- 如果给定或检测到的时区 ID 未知,请使用
GMT作为最后的手段。
根据 ID 创建的默认
TimeZone被缓存,并返回其克隆。user.timezone属性值在返回时设置为 ID。- 返回:
-
默认
TimeZone - 参见:
- 如果可用,请使用
-
setDefault
设置由getDefault方法返回的TimeZone。zone已缓存。如果zone为 null,则清除缓存的默认值TimeZone。此方法不会更改user.timezone属性的值。- 参数:
zone- 新的默认值TimeZone或 null- 抛出:
SecurityException- 如果安全经理的checkPermission拒绝PropertyPermission("user.timezone", "write")- 参见:
-
hasSameRules
如果此区域与另一个区域具有相同的规则和偏移量,则返回 true。也就是说,如果此区域仅在 ID 上有所不同(如果有的话)。如果其他区域为空,则返回 false。- 参数:
other- 要与之比较的TimeZone对象- 返回:
- 如果另一个区域不为空且与此区域相同,则为 true,ID 可能除外
- 自从:
- 1.2
-
clone
创建此TimeZone的副本。
-