- java.lang.Object
-
- java.util.TimeZone
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
- 已知直接子类:
-
SimpleTimeZone
public abstract class TimeZone extends Object implements Serializable, Cloneable
TimeZone
代表时区偏移量,也可以显示夏令时。通常,您将获得一个
TimeZone
使用getDefault
,根据程序运行的时区创建一个TimeZone
。 例如,对于在日本运行的程序,getDefault
基于日本标准时间创建TimeZone
对象。您还可以得到一个
TimeZone
使用getTimeZone
具有时区ID一起。 例如,美国太平洋时区的时区ID为“America / Los_Angeles”。 所以,你可以得到一个美国太平洋时间TimeZone
对象:TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
getAvailableIDs
方法来遍历所有支持的时区ID。 然后,您可以选择支持的ID来获取TimeZone
。 如果您希望的时区不是由支持的ID之一表示,则可以指定自定义时区ID以生成TimeZone。 自定义时区ID的语法为:CustomID:
GMT
Sign Hours:
MinutesGMT
Sign Hours MinutesGMT
Sign Hours Sign: one of+ -
Hours: Digit Digit Digit Minutes: Digit Digit Digit: one of0 1 2 3 4 5 6 7 8 9
格式与区域设置无关,数字必须取自Unicode标准的基本拉丁方块。 不能使用自定义时区ID指定夏令时转换时间表。 如果指定的字符串与语法
"GMT"
则使用"GMT"
。创建
TimeZone
,指定的自定义时区IDTimeZone
以下语法进行标准化:NormalizedCustomID:
GMT
Sign TwoDigitHours:
Minutes Sign: one of+ -
TwoDigitHours: Digit Digit Minutes: Digit Digit Digit: one of0 1 2 3 4 5 6 7 8 9
三个字母的时区ID
为了与JDK 1.1.x兼容,还支持一些其他三个字母的时区ID(如“PST”,“CTT”,“AST”)。 但是, 建议使用它们 ,因为相同的缩写经常用于多个时区(例如,“CST”可以是美国的“中部标准时间”和“中国标准时间”),然后在Java平台只能识别一个他们。- 从以下版本开始:
- 1.1
- 另请参见:
-
Calendar
,GregorianCalendar
,SimpleTimeZone
, Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 TimeZone()
唯一的构造函数。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 Object
clone()
创建一个这个TimeZone
的副本。static String[]
getAvailableIDs()
获取支持的所有可用ID。static String[]
getAvailableIDs(int rawOffset)
根据给定的时区偏移(以毫秒为单位)获取可用ID。static TimeZone
getDefault()
获取Java虚拟机的默认值TimeZone
。String
getDisplayName()
返回此TimeZone
的较长标准时间名称,TimeZone
适用于默认语言环境中的用户呈现。String
getDisplayName(boolean daylight, int style)
返回此TimeZone
指定的style
中的名称,该名称适用于以默认语言环境向用户呈现。String
getDisplayName(boolean daylight, int style, Locale locale)
返回此TimeZone
指定的style
中的一个名称,适用于在指定的style
中向用户locale
。String
getDisplayName(Locale locale)
返回此TimeZone
的长标准时间名称,适用于在指定的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
。static TimeZone
getTimeZone(ZoneId zoneId)
获得TimeZone
给定的zoneId
。boolean
hasSameRules(TimeZone other)
如果此区域具有与其他区域相同的规则和偏移量,则返回true。abstract boolean
inDaylightTime(Date date)
查询给定的date
是否在此时区的夏令时间内。boolean
observesDaylightTime()
如果此TimeZone
当前处于夏令时,或者如果将来发生从标准时间到夏令时的转换,则返回true
。static void
setDefault(TimeZone zone)
设置TimeZone
由返回getDefault
方法。void
setID(String ID)
设置时区ID。abstract void
setRawOffset(int offsetMillis)
将基准时区偏移设置为GMT。ZoneId
toZoneId()
将此TimeZone
对象转换为ZoneId
。abstract boolean
useDaylightTime()
查询TimeZone
使用夏令时。
-
-
-
字段详细信息
-
SHORT
public static final int SHORT
getDisplayName()
的样式说明符,表示短名称,如“PST”。- 从以下版本开始:
- 1.2
- 另请参见:
-
LONG
, Constant Field Values
-
LONG
public static final int LONG
getDisplayName()
的样式说明getDisplayName()
表示长名称,如“太平洋标准时间”。- 从以下版本开始:
- 1.2
- 另请参见:
-
SHORT
, Constant Field Values
-
-
方法详细信息
-
getOffset
public abstract int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds)
获取当前日期的时区偏移,在夏令时情况下进行修改。 这是添加到UTC以获取当地时间的偏移量。如果基础
TimeZone
实现子类支持历史夏令时计划和GMT偏移量更改,则此方法返回历史正确的偏移量。- 参数
-
era
- 给定日期的时代。 -
year
- 给定日期的年份。 -
month
- 给定日期的月份。 月份为0。 例如,1月份为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()
返回此TimeZone
的较长标准时间名称,适合在默认语言环境中向用户呈现。此方法相当于:
getDisplayName(false,
LONG
, Locale.getDefault(Locale.Category.DISPLAY
))- 结果
- 默认语言环境中此时区的可读名称。
- 从以下版本开始:
- 1.2
- 另请参见:
-
getDisplayName(boolean, int, Locale)
,Locale.getDefault(Locale.Category)
,Locale.Category
-
getDisplayName
public final String getDisplayName(Locale locale)
- 参数
-
locale
- 提供显示名称的区域设置。 - 结果
- 该时区的人机可读名称在给定的区域设置。
- 异常
-
NullPointerException
- 如果locale
是null
。 - 从以下版本开始:
- 1.2
- 另请参见:
-
getDisplayName(boolean, int, Locale)
-
getDisplayName
public final String getDisplayName(boolean daylight, int style)
返回此TimeZone
指定的style
中的一个名称,适用于以默认语言环境向用户呈现。 如果指定的daylight
为true
,则会返回夏令时名称(即使此TimeZone
未遵守夏令时)。 否则返回标准时间名称。此方法相当于:
getDisplayName(daylight, style, Locale.getDefault(
Locale.Category.DISPLAY
))- 参数
-
daylight
-true
指定夏令时名称,或false
指定标准时间名称 -
style
-LONG
或SHORT
- 结果
- 默认语言环境中此时区的可读名称。
- 异常
-
IllegalArgumentException
- 如果style
无效。 - 从以下版本开始:
- 1.2
- 另请参见:
-
getDisplayName(boolean, int, Locale)
,Locale.getDefault(Locale.Category)
,Locale.Category
,DateFormatSymbols.getZoneStrings()
-
getDisplayName
public String getDisplayName(boolean daylight, int style, Locale locale)
返回该TimeZone
指定的style
中的一个名称,适用于在指定的style
中向用户locale
。 如果指定的daylight
为true
,则会返回夏令时名称(即使此TimeZone
未遵守夏令时)。 否则返回标准时间名称。当查找时区名称时,使用从指定的locale派生的
locale
。 (No fallbackLocale
执行搜索。)如果找到包含Locale.ROOT
的搜索路径的任何Locale
中的时区名称,则返回该名称。 否则,返回normalized custom ID format中的字符串。- 参数
-
daylight
-true
指定夏令时名称,或指定标准时间名称的false
-
style
-LONG
或SHORT
-
locale
- 提供显示名称的区域设置。 - 结果
- 该时区的人机可读名称在给定的区域设置。
- 异常
-
IllegalArgumentException
- 如果style
无效。 -
NullPointerException
- 如果locale
是null
。 - 从以下版本开始:
- 1.2
- 另请参见:
-
DateFormatSymbols.getZoneStrings()
-
getDSTSavings
public int getDSTSavings()
返回添加到本地标准时间以获取本地挂钟时间的时间量。如果对
useDaylightTime()
的调用返回true
,默认实现将返回3600000毫秒(即一小时)。 否则返回0(零)。如果底层的
TimeZone
实现子类支持历史和未来的夏令时计划更改,则此方法返回最后一个已知的夏令时规则的可节约时间量,这可以作为将来的预测。如果需要任何给定时间戳的节省时间, 请使用该
TimeZone
和时间戳构建(
,并致电Calendar.get
(
Calendar.DST_OFFSET
)
。- 结果
- 节省时间(毫秒)
- 从以下版本开始:
- 1.4
- 另请参见:
-
inDaylightTime(Date)
,getOffset(long)
,getOffset(int,int,int,int,int,int)
,Calendar.ZONE_OFFSET
-
useDaylightTime
public abstract boolean useDaylightTime()
查询TimeZone
使用夏令时。如果底层的
TimeZone
实现子类支持历史和未来的夏令时计划更改,则该方法参考最后一个已知的夏令时规则,该规则可以是将来的预测,并且可能与当前规则不同。 如果现行规则也应该考虑,请考虑拨打observesDaylightTime()
。- 结果
-
true
如果这TimeZone
使用夏令时,false
否则。 - 另请参见:
-
inDaylightTime(Date)
,Calendar.DST_OFFSET
-
observesDaylightTime
public boolean observesDaylightTime()
如果此TimeZone
当前处于夏令时,或者如果从将来的时间发生从标准时间到夏令时的转换,则返回true
。默认实现返回
true
如果useDaylightTime()
或者inDaylightTime(new Date())
回报true
。- 结果
-
true
如果此TimeZone
当前处于夏令时,或者如果从将来的时间发生从标准时间到夏令时的过渡;false
否则。 - 从以下版本开始:
- 1.7
- 另请参见:
-
useDaylightTime()
,inDaylightTime(Date)
,Calendar.DST_OFFSET
-
inDaylightTime
public abstract boolean inDaylightTime(Date date)
查询给定的date
是否在此时区的date
时制。- 参数
-
date
- 给定的日期。 - 结果
-
true
如果给定的日期是夏令时,false
,否则。
-
getTimeZone
public static TimeZone getTimeZone(String ID)
获取给定ID的TimeZone
。- 参数
-
ID
-的ID为TimeZone
,要么的缩写如“PST”,一个完整的名称,如“美国/洛杉矶”,或自定义ID,如“GMT-8:00”。 请注意,缩写的支持仅适用于JDK 1.1.x兼容性,应使用全名。 - 结果
-
指定的
TimeZone
或GMT区域,如果给定的ID不能被理解。
-
getTimeZone
public static TimeZone getTimeZone(ZoneId zoneId)
获取TimeZone
为给定zoneId
。- 参数
-
zoneId
- 获得时区ID的ZoneId
- 结果
-
指定的
TimeZone
或GMT区域,如果给定的ID不能被理解。 - 异常
-
NullPointerException
- 如果zoneId
是null
- 从以下版本开始:
- 1.8
-
toZoneId
public ZoneId toZoneId()
将此TimeZone
对象转换为ZoneId
。- 结果
-
一个
ZoneId
代表与这个TimeZone
相同的时区 - 从以下版本开始:
- 1.8
-
getAvailableIDs
public static String[] getAvailableIDs(int rawOffset)
根据给定的时区偏移(以毫秒为单位)获取可用ID。- 参数
-
rawOffset
- 给定的时区GMT偏移量(以毫秒为单位)。 - 结果
- 一组ID,其中该ID的时区具有指定的GMT偏移量。 例如,“美国/凤凰”和“美国/丹佛”都有GMT-07:00,但夏令时不同。
- 另请参见:
-
getRawOffset()
-
getAvailableIDs
public static String[] getAvailableIDs()
获取支持的所有可用ID。- 结果
- 一组ID。
-
getDefault
public static TimeZone getDefault()
获取Java虚拟机的默认值TimeZone
。 如果缓存的默认TimeZone
可用,则返回其克隆。 否则,该方法将采取以下步骤来确定默认时区。- 如果可用,则使用
user.timezone
属性值作为默认时区ID。 - 检测平台时区ID。 平台时区和ID映射的来源可能随实施而变化。
- 如果给定或检测到的时区ID未知,请使用
GMT
作为最后的手段。
从ID创建的默认
TimeZone
被缓存,并且它的克隆被返回。user.timezone
属性值返回时设置为ID。- 结果
-
默认为
TimeZone
- 另请参见:
-
setDefault(TimeZone)
- 如果可用,则使用
-
setDefault
public static void setDefault(TimeZone zone)
设置TimeZone
由返回getDefault
方法。zone
被缓存。 如果zone
为空,缓存默认值TimeZone
被清除。 此方法不会更改user.timezone
属性的值。- 参数
-
zone
- 新的默认值TimeZone
,或null - 异常
-
SecurityException
- 如果安全经理的checkPermission
否认PropertyPermission("user.timezone", "write")
- 另请参见:
-
getDefault()
,PropertyPermission
-
hasSameRules
public boolean hasSameRules(TimeZone other)
如果此区域具有与其他区域相同的规则和偏移量,则返回true。 也就是说,如果这个区域只有ID不同,如果有的话。 如果其他区域为空,则返回false。- 参数
-
other
- 要比较的TimeZone
对象 - 结果
- 如果其他区域不为空且与此相同,则为true,ID可能为例外
- 从以下版本开始:
- 1.2
-
-