- 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的语法为:
小时数必须在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标准的基本拉丁方块。 不能使用自定义时区ID指定夏令时转换时间表。 如果指定的字符串与语法
"GMT"则使用"GMT"。创建
TimeZone,指定的自定义时区IDTimeZone以下语法进行标准化:
例如,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
-
-
构造方法摘要
构造方法 Constructor 描述 TimeZone()唯一的构造函数。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 Objectclone()创建一个这个TimeZone的副本。static String[]getAvailableIDs()获取支持的所有可用ID。static String[]getAvailableIDs(int rawOffset)根据给定的时区偏移(以毫秒为单位)获取可用ID。static TimeZonegetDefault()获取Java虚拟机的默认值TimeZone。StringgetDisplayName()返回此TimeZone的较长标准时间名称,TimeZone适用于默认语言环境中的用户呈现。StringgetDisplayName(boolean daylight, int style)返回此TimeZone指定的style中的名称,该名称适用于以默认语言环境向用户呈现。StringgetDisplayName(boolean daylight, int style, Locale locale)返回此TimeZone指定的style中的一个名称,适用于在指定的style中向用户locale。StringgetDisplayName(Locale locale)返回此TimeZone的长标准时间名称,适用于在指定的locale向用户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使用夏令时。
-
-
-
字段详细信息
-
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
-
-