public abstract class ZoneId extends Object implements Serializable
Europe/Paris
。
一个ZoneId
用于识别用于Instant
和LocalDateTime
之间的转换规则。有两种不同类型的标识:
ZoneOffset
。在任何
ZoneId
调用
normalized()
将确保一个固定的偏移的ID将被表示为一个
ZoneOffset
。
实际的规则,描述何时以及如何偏移的变化,由ZoneRules
。这个类只是用来获取基本规则的一个身份证。这种方法是采取,因为规则是由政府定义的,并经常变化,而身份证是稳定的。
区别有其他影响。序列化ZoneId
只会发送的ID,而序列化规则将整个数据集。同样,两个入侵检测系统的比较只检查身份证,而两个规则的比较检查整个数据集。
最简单的身份,从ZoneOffset
。这包括“Z”和从“+”或“-”开始的入侵检测系统。
ID下型偏移式IDS与某种形式的前缀,如“东2时区”或“UTC + 01:00”。公认的前缀是“UTC”,'时间'和'但是'。偏移量是后缀,并将在创建过程中正常化。这些ID可以归到一个ZoneOffset
使用normalized()
。
第三种类型的身份证是基于区域的入侵检测系统。基于区域的ID必须是两个或两个以上的字符,而不是从“UTC”、“时间”、“UT”“+”或“-”。基于区域的入侵检测系统定义的配置,看到ZoneRulesProvider
。配置重点从身份到潜在的ZoneRules
提供查找。
时区规则是由政府定义的,并且经常改变。有一些组织,这里被称为组,监视时区的变化,并整理他们。默认组是IANA时区数据库(零时介质击穿)。其他组织包括国际航空运输协会(航空业体)和微软。
每个组都定义了它提供的区域标识的自己的格式。的定义如“零时介质击穿组ID欧洲/伦敦或美国/ new_york”。零时介质击穿的IDS优先于其他组。
这是强烈建议组名称是包含在所有的ID比零时介质击穿避免冲突组提供。例如,航空公司的时间区域入侵检测系统通常为三个字母的机场代码相同。然而,乌得勒支机场的代码“UTC”,这显然是一个冲突。推荐格式的区域ID从组比其他组~零时介质击穿区。因此,如果定义了国际航空运输协会的数据,乌得勒支机场是国际航空运输协会~ UTC”。
ZoneOffset
类使用一个专用的格式,只有从UTC偏移/格林尼治。
一个ZoneId
可以反序列化,在java运行时的身份是未知的。例如,如果一个服务器端java运行时已用一种新的区域ID更新,但java客户端运行时没有更新。在这种情况下,ZoneId
对象的存在,并且可以使用getId
,equals
,hashCode
,toString
查询,getDisplayName
和normalized
。然而,任何调用将失败,ZoneRulesException
getRules
。这种方法的目的是让一ZonedDateTime
被加载和查询,但不能修改,在一个不完整的时区信息java运行时。
这是一个value-based类;利用身份敏感的操作(包括引用相等(==
),身份的哈希代码,或同步)的实例ZoneId
可能有不可预知的结果应该是可以避免的。的equals
法进行比较。
ZoneOffset
偏移。这种差异在序列化中是可见的。
Modifier and Type | Field and Description |
---|---|
static Map<String,String> |
SHORT_IDS
一个Map区域覆盖使短时间区的名字被用来。
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object obj)
检查这个时区是否等于另一个时区的身份证。
|
static ZoneId |
from(TemporalAccessor temporal)
获得
ZoneId 实例从一个时空对象。
|
static Set<String> |
getAvailableZoneIds()
获取可用区域标识集的集合。
|
String |
getDisplayName(TextStyle style, Locale locale)
获取该区的文字表述,如“英国时间”或“+”02:00。
|
abstract String |
getId()
获取唯一的时区标识。
|
abstract ZoneRules |
getRules()
获取此标识允许执行的计算的时区规则。
|
int |
hashCode()
这个时区的一个哈希代码。
|
ZoneId |
normalized()
规范时区ID,返回一个
ZoneOffset 尽可能。
|
static ZoneId |
of(String zoneId)
获得
ZoneId 实例的ID确保身份的有效性和可供使用。
|
static ZoneId |
of(String zoneId, Map<String,String> aliasMap)
得到一个实例
ZoneId 使用ID使用Map的别名,以补充标准区ID。
|
static ZoneId |
ofOffset(String prefix, ZoneOffset offset)
获得
ZoneId 包装胶印的实例。
|
static ZoneId |
systemDefault()
获取系统默认时区。
|
String |
toString()
输出这个区域作为一个
String ,使用ID。
|
public static final Map<String,String> SHORT_IDS
使用短带ID已经被废弃在java.util.TimeZone
。这个Map允许系统继续使用,通过of(String, Map)
工厂方法。
这张Map包含的ID是在零时介质击穿2005r和线后的映射,在“科技”、“树”和“HST”Map标识不包括夏令时。
这张Map如下:
public static ZoneId systemDefault()
这个查询TimeZone.getDefault()
找到默认时区转换为ZoneId
。如果系统默认时区更改,则此方法的结果也将更改。
DateTimeException
如果转换区ID的格式无效
ZoneRulesException
如果转换区域ID不能被发现
public static Set<String> getAvailableZoneIds()
此集合包括所有可用区域为基础的入侵检测系统的字符串形式。偏移的区域标识不包含在返回的集合中。ID可以通过of(String)
创造ZoneId
。
区域标识的集合可以随着时间的推移而增加,虽然在一个典型的应用程序中,该组的入侵检测系统是固定的。这个方法的每个调用都是线程安全的。
public static ZoneId of(String zoneId, Map<String,String> aliasMap)
ZoneId
使用ID使用Map的别名,以补充标准区ID。
时区很多用户使用较短的缩写,如PST的太平洋标准时间”和“太平洋夏令时的PDT。这些缩写不是唯一的,所以不能作为入侵检测系统。该方法允许在应用程序中设置和重用的字符串到时区的映射图。
zoneId
-时区ID,不为空
aliasMap
-Map的别名区ID(通常缩写)房区ID,不为空
DateTimeException
如果带ID的格式无效
ZoneRulesException
如果带身份证是一个区域ID不能发现的
public static ZoneId of(String zoneId)
ZoneId
实例的ID确保身份的有效性和可供使用。
此方法分析ID产生ZoneId
或ZoneOffset
。一个ZoneOffset
如果ID是“Z”返回,或从“+”或“-”。结果始终是一个有效的ID,ZoneRules
可以得到。
解析匹配的区域标识一步一步如下。
ZoneOffset.UTC
。DateTimeException
抛出。ZoneOffset
使用ZoneOffset.of(String)
。ZoneId
具有相同ID的规则相当于ZoneOffset.UTC
。ZoneOffset
。其结果将是一个ZoneId
与指定的秒/时间/ UT前缀和归一化偏移ID为每ZoneOffset.getId()
。返回的ZoneId
规则将等同于解析ZoneOffset
。[A-Za-z][A-Za-z0-9~/._+-]+
否则DateTimeException
抛出。如果带身份证不在配置的组ID,ZoneRulesException
抛出。该区域标识的详细格式取决于提供数据的组。数据集的默认是由IANA时区数据库提供(零时介质击穿)。这地区的IDS的形式的{ }和{ }的城市地区,如欧洲、巴黎或美国/ new_york”。这是从TimeZone
大多数入侵检测系统兼容。zoneId
-时区ID,不为空
DateTimeException
如果带ID的格式无效
ZoneRulesException
如果带身份证是一个区域ID不能发现的
public static ZoneId ofOffset(String prefix, ZoneOffset offset)
ZoneId
包装胶印的实例。
如果前缀是“时间”,“时间”,或“UT”ZoneId
与前缀和非零偏移返回。如果前缀是空的ZoneOffset
""
返回。
prefix
-时区ID,不为空
offset
的偏移,不空
IllegalArgumentException
-如果前缀是“时间”,“时间”,或“UT”,或“”
public static ZoneId from(TemporalAccessor temporal)
ZoneId
实例从一个时空对象。
这获得一个区域的基础上指定的时间。一个TemporalAccessor
表示日期和时间信息,任意设置,本厂将以ZoneId
实例。
一个TemporalAccessor
代表某种形式的日期和时间信息。本厂将任意时空对象的一个实例ZoneId
。
转换将试图以某种方式支持基于区域的区域使用基于TemporalQueries.zone()
区偏移获得区。
这种方法相匹配的功能接口TemporalQuery
可以通过方法引用查询中的签名,ZoneId::from
。
temporal
-转换时间的对象,不为空
DateTimeException
如果无法转换为
ZoneId
public abstract String getId()
此标识唯一定义此对象。胶印的格式基于身份的定义是ZoneOffset.getId()
。
public String getDisplayName(TextStyle style, Locale locale)
返回用于标识时区标识的文本名称,用于向用户演示文稿。参数控制返回的文本和区域设置的样式。
如果没有文本映射找到那么full ID
返回。
style
-文本所需要的长度,不空
locale
-现场使用,不为空
public abstract ZoneRules getRules()
该规则提供与时区相关联的功能,例如为给定的即时或本地日期时间查找偏移量。
一个时区可以无效如果是反序列化,在java运行时不具有相同的规则加载存储的java运行时。在这种情况下,调用此方法将抛出一个ZoneRulesException
。
规则是由ZoneRulesProvider
。一种先进的供应商可以支持动态更新的规则,而无需重新启动java运行时。如果是这样的话,这种方法的结果可能会随着时间的推移而改变。每个单独的调用都将仍然保持线程安全。
ZoneOffset
将总是返回一组规则,其中偏移从不改变。
ZoneRulesException
-如果没有规则可用于此ID
public ZoneId normalized()
ZoneOffset
尽可能。
返回正常ZoneId
可以用来代替这个ID的结果将有ZoneRules
等同于该对象返回,但是返回的ID的getId()
可能不同。
规范化检查这ZoneId
规则有一个固定的偏移。如果他们这样做,那么ZoneOffset
等于抵消返回。否则this
返回。
public boolean equals(Object obj)
比较是基于身份证。
equals
方法重写,继承类
Object
obj
-检查对象,空返回false
Object.hashCode()
,
HashMap
public int hashCode()
hashCode
方法重写,继承类
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.