- java.lang.Object
-
- java.util.TimeZone
-
- 实现的所有接口
-
Serializable
,Cloneable
- 已知直接子类:
-
SimpleTimeZone
public abstract class TimeZone extends Object implements Serializable, Cloneable
TimeZone
表示时区偏移,并且还计算出夏令时。通常情况下,你会得到一个
TimeZone
使用getDefault
它创建了一个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:
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标准的Basic Latin块。 不能使用自定义时区ID指定夏令时转换计划。 如果指定的字符串与语法不匹配,则使用
"GMT"
。创建
TimeZone
,将使用以下语法规范化指定的自定义时区ID: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
-
-
构造方法摘要
构造方法 构造器 描述 TimeZone()
唯一的构造函数。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 Object
clone()
创建此TimeZone
的副本。static String[]
getAvailableIDs()
获取支持的所有可用ID。static String[]
getAvailableIDs(int rawOffset)
根据给定的时区偏移量(以毫秒为单位)获取可用的ID。static TimeZone
getDefault()
获取Java虚拟机的默认TimeZone
。String
getDisplayName()
返回此TimeZone
的长标准时间名称,适合在默认语言环境中呈现给用户。String
getDisplayName(boolean daylight, int style)
返回此TimeZone
的指定style
中的名称,该名称适合以默认语言环境呈现给用户。String
getDisplayName(boolean daylight, int style, Locale locale)
返回指定的名称style
如此TimeZone
适合于展示给指定的用户locale
。String
getDisplayName(Locale locale)
返回此TimeZone
的长标准时间名称,适合在指定的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
使用夏令时。
-
-
-
方法详细信息
-
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表示1月份。 -
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以毫秒为单位的日期 - 结果
- 添加到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)
返回指定的名称style
如此TimeZone
适合于展示给指定的用户locale
。 如果指定的daylight
是true
,则返回夏令时名称(即使此TimeZone
未遵守夏令时)。 否则,返回标准时间名称。查找时区名称时,将使用从指定的locale派生的
locale
。 (不执行fallbackLocale
搜索。)如果找到搜索路径的任何Locale
中的时区名称(包括Locale.ROOT
) ,则返回该名称。 否则,返回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
- 给定日期。 - 结果
-
true
如果给定日期为夏令时,false
,否则为。
-
getTimeZone
public static TimeZone getTimeZone(String ID)
获取给定ID的TimeZone
。- 参数
-
ID
-的ID为TimeZone
,要么的缩写如“PST”,一个完整的名称,如“美国/洛杉矶”,或自定义ID,如“GMT-8:00”。 请注意,缩写的支持仅适用于JDK 1.1.x兼容性,应使用全名。 - 结果
-
如果无法理解给定的ID,则指定
TimeZone
或GMT区域。
-
getTimeZone
public static TimeZone getTimeZone(ZoneId zoneId)
获取TimeZone
对于给定的zoneId
。- 参数
-
zoneId
- 从中获取时区ID的ZoneId
- 结果
-
如果无法理解给定的ID,则指定
TimeZone
或GMT区域。 - 异常
-
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偏移量。 例如,“America / Phoenix”和“America / Denver”都有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
为null,则清除缓存的默认值TimeZone
。 此方法不会更改user.timezone
属性的值。- 参数
-
zone
- 新的默认值TimeZone
,或null - 异常
-
SecurityException
- 如果安全经理的checkPermission
否认PropertyPermission("user.timezone", "write")
- 另请参见:
-
getDefault()
,PropertyPermission
-
hasSameRules
public boolean hasSameRules(TimeZone other)
如果此区域与另一个区域具有相同的规则和偏移量,则返回true。 也就是说,如果此区域仅在ID方面有所不同,则完全不同。 如果另一个区域为null,则返回false。- 参数
-
other
- 要与之比较的TimeZone
对象 - 结果
- 如果另一个区域不为空且与此区域相同,则为true,但ID可能例外
- 从以下版本开始:
- 1.2
-
-