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: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
时,指定的自定义时区ID按以下语法进行标准化:
例如,TimeZone.getTimeZone(“GMT-8”)。getID()返回“GMT-08:00”。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
Calendar
, GregorianCalendar
, SimpleTimeZone
, Serialized Form
Modifier and Type | Field and Description |
---|---|
static int |
LONG
的风格说明
getDisplayName() 指出长名称,如“太平洋标准时间”。
|
static int |
SHORT
的风格说明
getDisplayName() 指出短名称,如“PST”。
|
Constructor and Description |
---|
TimeZone()
唯一的构造函数。
|
Modifier and Type | Method and Description |
---|---|
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)
返回此style
style 的
TimeZone 适合以默认语言环境呈现给用户的名称。
|
String |
getDisplayName(boolean daylight, int style, Locale locale)
返回指定的名称
style 如此
TimeZone 适合于展示给指定的用户
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 使用夏令时。
|
public static final int SHORT
getDisplayName()
指出短名称,如“PST”。
LONG
,
Constant Field Values
public static final int LONG
getDisplayName()
指出长名称,如“太平洋标准时间”。
SHORT
,
Constant Field Values
public abstract int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds)
如果基础TimeZone
实现子类支持历史夏令时计划和GMT偏移量更改,则此方法返回历史正确的偏移量。
era
- 给定日期的时代。
year
- 给定日期的年份。
month
- 给定日期的月份。
月份为0。
例如,1月份为0。
day
- 给定日期的日期。
dayOfWeek
- 给定日期的星期几。
milliseconds
-
标准当地时间的毫秒数。
Calendar.ZONE_OFFSET
,
Calendar.DST_OFFSET
public int getOffset(long date)
如果底层TimeZone实现子类支持历史夏令时计划和GMT偏移量更改,则此方法返回历史上正确的偏移值。
date
- 自1970年1月1日00:00:00 GMT以毫秒表示的日期
Calendar.ZONE_OFFSET
,
Calendar.DST_OFFSET
public abstract void setRawOffset(int offsetMillis)
如果底层TimeZone
实现子类支持历史GMT偏移量更改,则将指定的GMT偏移量设置为最新的GMT偏移量,并使用与已知最新GMT偏移值的差值来调整所有历史GMT偏移值。
offsetMillis
- 给定的基准时区偏移到GMT。
public abstract int getRawOffset()
如果基础TimeZone
实现子类支持历史GMT偏移量更改,则该方法返回当前日期的原始偏移值。 例如,在檀香山,其原始偏移量在1947年从GMT-10:30改为GMT-10:00,该方法总是返回-36000000毫秒(即-10小时)。
Calendar.ZONE_OFFSET
public String getID()
public void setID(String ID)
ID
- 新的时区ID。
public final String getDisplayName()
TimeZone
的较长标准时间名称,适用于以默认语言环境向用户呈现。
此方法相当于:
getDisplayName(false,LONG
, Locale.getDefault(Locale.Category.DISPLAY
))
getDisplayName(boolean, int, Locale)
, Locale.getDefault(Locale.Category)
, Locale.Category
public final String getDisplayName(Locale locale)
locale
- 提供显示名称的区域设置。
NullPointerException
- 如果
locale
是
null
。
getDisplayName(boolean, int, Locale)
public final String getDisplayName(boolean daylight, int style)
TimeZone
适用于以默认语言环境向用户style
的名称。
如果指定的daylight
为true
,则返回夏令时名称(即使TimeZone
未遵守夏令时)。
否则返回标准时间名称。
此方法相当于:
getDisplayName(daylight, style, Locale.getDefault(Locale.Category.DISPLAY
))
daylight
-
true
指定夏令时名称,或
false
标准时间名称的false
style
-
LONG
或
SHORT
IllegalArgumentException
- 如果
style
无效。
getDisplayName(boolean, int, Locale)
, Locale.getDefault(Locale.Category)
, Locale.Category
, DateFormatSymbols.getZoneStrings()
public String getDisplayName(boolean daylight, int style, Locale locale)
style
如此TimeZone
适合于展示给指定的用户locale
。
如果指定的daylight
为true
,则返回夏令时(即使TimeZone
未遵守夏令时)。
否则返回标准时间名称。
当寻找一个时区名称, default Locale
search path of ResourceBundle
从指定的衍生locale
使用。 (无fallback Locale
执行搜索。)如果在任何一个时区名称Locale
搜索路径,包括Locale.ROOT
被发现,被返回的名称。 否则,在一个字符串normalized custom ID format返回。
daylight
-
true
指定夏令时名称,或
false
标准时间名称的false
style
-
LONG
或
SHORT
locale
- 提供显示名称的区域设置。
IllegalArgumentException
- 如果
style
无效。
NullPointerException
- 如果
locale
是
null
。
DateFormatSymbols.getZoneStrings()
public int getDSTSavings()
如果调用useDaylightTime()
返回true
则默认实现返回3600000毫秒(即一小时)。 否则返回0(零)。
如果底层的TimeZone
实现子类支持历史和未来的夏令时计划更改,则此方法返回最后一个已知的夏令时规则的可用时间预留量。
如果需要任何给定时间戳的节省时间, 请使用此TimeZone
和时间戳构建 (
,并致电Calendar.get
(
Calendar.DST_OFFSET
)
。
inDaylightTime(Date)
,
getOffset(long)
,
getOffset(int,int,int,int,int,int)
,
Calendar.ZONE_OFFSET
public abstract boolean useDaylightTime()
TimeZone
使用夏令时。
如果基础TimeZone
实现子类支持历史和未来的夏令时计划更改,则该方法参考最后一个已知的夏令时规则,该规则可以是将来的预测,并且可能与当前规则不同。 考虑调用observesDaylightTime()
,如果当前规则也应该考虑在内。
true
如果这
TimeZone
使用夏令时,
false
,否则。
inDaylightTime(Date)
,
Calendar.DST_OFFSET
public boolean observesDaylightTime()
TimeZone
当前处于夏令时,或者如果从将来的时间发生从标准时间到夏令时的转换,则返回true
。
默认实现返回true
如果useDaylightTime()
或inDaylightTime(new Date())
回报true
。
true
如果此TimeZone
当前处于夏令时,或者如果在任何将来的时间发生从标准时间到夏令时的过渡;
false
否则。
useDaylightTime()
,
inDaylightTime(Date)
,
Calendar.DST_OFFSET
public abstract boolean inDaylightTime(Date date)
date
是否在此时区的夏时制。
date
- 给定的日期。
true
如果给定的日期是在夏令时,
false
,否则。
public static TimeZone getTimeZone(String ID)
TimeZone
。
ID
-的ID为TimeZone
,要么的缩写如“PST”,一个完整的名称,如“美国/洛杉矶”,或自定义ID,如“GMT-8:00”。
请注意,缩写的支持仅适用于JDK 1.1.x兼容性,应使用全名。
TimeZone
或GMT区域,如果给定的ID不能被理解。
public static TimeZone getTimeZone(ZoneId zoneId)
TimeZone
对于给定
zoneId
。
zoneId
- 一个ZoneId
,从中获得时区ID
TimeZone
或GMT区域,如果给定的ID不能被理解。
NullPointerException
- 如果
zoneId
是
null
public ZoneId toZoneId()
TimeZone
对象转换为
ZoneId
。
ZoneId
表示相同的时区,因为这
TimeZone
public static String[] getAvailableIDs(int rawOffset)
rawOffset
- 以
rawOffset
为单位的给定时区GMT偏移量。
getRawOffset()
public static String[] getAvailableIDs()
public static TimeZone getDefault()
TimeZone
。
如果缓存默认值为TimeZone
可用,则返回其克隆。
否则,该方法将采取以下步骤来确定默认时区。
user.timezone
属性值作为默认时区ID。 GMT
作为最后的手段。 从ID创建的默认值TimeZone
被缓存,并且返回其克隆。 user.timezone
属性值返回时设置为ID。
TimeZone
setDefault(TimeZone)
public static void setDefault(TimeZone zone)
TimeZone
由返回getDefault
方法。
zone
被缓存。
如果zone
为空,缓存默认值TimeZone
将被清除。
此方法不会更改user.timezone
属性的值。
zone
- 新的默认值
TimeZone
,或null
SecurityException
- 如果安全管理员的
checkPermission
否认
PropertyPermission("user.timezone", "write")
getDefault()
, PropertyPermission
public boolean hasSameRules(TimeZone other)
other
- 要比较的
TimeZone
对象