- 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的语法是:
小时数必须介于0到23之间, 分钟数必须介于00到59之间。例如,“GMT + 10”和“GMT + 0010”分别比GMT提前10小时10分钟。CustomID:
GMTSign Hours:MinutesGMTSign Hours MinutesGMTSign 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:
例如,TimeZone.getTimeZone(“GMT-8”)。getID()返回“GMT-08:00”。NormalizedCustomID:
GMTSign 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()唯一的构造函数。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 Objectclone()创建此TimeZone的副本。static String[]getAvailableIDs()获取支持的所有可用ID。static String[]getAvailableIDs(int rawOffset)根据给定的时区偏移量(以毫秒为单位)获取可用的ID。static TimeZonegetDefault()获取Java虚拟机的默认TimeZone。StringgetDisplayName()返回此TimeZone的长标准时间名称,适合在默认语言环境中呈现给用户。StringgetDisplayName(boolean daylight, int style)返回此TimeZone的指定style中的名称,该名称适合以默认语言环境呈现给用户。StringgetDisplayName(boolean daylight, int style, Locale locale)返回指定的名称style如此TimeZone适合于展示给指定的用户locale。StringgetDisplayName(Locale locale)返回此TimeZone的长标准时间名称,适合在指定的locale呈现给用户。intgetDSTSavings()返回添加到本地标准时间以获取本地挂钟时间的时间量。StringgetID()获取此时区的ID。abstract intgetOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds)获取当前日期的时区偏移量,在夏令时的情况下进行修改。intgetOffset(long date)在指定日期返回此时区与UTC的偏移量。abstract intgetRawOffset()返回添加到UTC以获取此时区的标准时间的时间量(以毫秒为单位)。static TimeZonegetTimeZone(String ID)获取给定ID的TimeZone。static TimeZonegetTimeZone(ZoneId zoneId)获取TimeZone对于给定的zoneId。booleanhasSameRules(TimeZone other)如果此区域与另一个区域具有相同的规则和偏移量,则返回true。abstract booleaninDaylightTime(Date date)查询给定的date是否处于此时区的夏令时。booleanobservesDaylightTime()如果此TimeZone当前处于夏令时,或者在将来某个时间从标准时间转换为夏令时,则返回true。static voidsetDefault(TimeZone zone)设置TimeZone由返回getDefault方法。voidsetID(String ID)设置时区ID。abstract voidsetRawOffset(int offsetMillis)将基准时区偏移设置为GMT。ZoneIdtoZoneId()将此TimeZone对象转换为ZoneId。abstract booleanuseDaylightTime()查询此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
-
-