public abstract class ZoneId extends Object implements Serializable
Europe/Paris 。 
        A ZoneId用于识别用于在Instant和LocalDateTime之间转换的规则。 有两种不同类型的ID: 
ZoneOffset表示 。 
       在任何ZoneId上ZoneId将确保固定的偏移ID将被表示为ZoneOffset 。 
        描述偏移变化的时间和方式的实际规则由ZoneRules定义。 这个类只是一个用于获取基本规则的ID。 采取这种方法是因为规则由政府定义并且频繁变化,而ID是稳定的。 
 这个区别有其他的影响。 序列化ZoneId只会发送ID,而序列化规则会发送整个数据集。 类似地,两个ID的比较仅检查ID,而两个规则的比较检查整个数据集。 
 最简单的ID是ZoneOffset 。 这由“Z”和以“+”或“ - ”开头的ID组成。 
 下一种类型的ID是具有某些形式的前缀的偏移样式ID,例如“GMT + 2”或“UTC + 01:00”。 识别的前缀是“UTC”,“GMT”和“UT”。 偏移量是后缀,在创建过程中将被归一化。 这些ID可以归一ZoneOffset使用normalized() 。 
 第三种类型的ID是基于区域的ID。 基于区域的ID必须为两个或更多个字符,而不是以“UTC”,“GMT”,“UT”+“或” - “开头。 基于区域的ID由配置定义,请参见ZoneRulesProvider 。 配置重点是提供从ID到底层的查找ZoneRules 。 
时区规则由政府界定,频繁变化。 有一些组织,这里被称为组,监视时区更改并整理它们。 默认组是IANA时区数据库(TZDB)。 其他组织包括国际航协(航空业机构)和微软。
每个组为其提供的区域ID定义其自己的格式。 TZDB组定义了诸如“Europe / London”或“America / New_York”之类的ID。 TZDB ID优先于其他组。
强烈建议组名称包含在TZDB以外的组所提供的所有ID中,以避免冲突。 例如,IATA航空公司时区区域ID通常与三字母机场代码相同。 但是,乌特勒支机场的代码“UTC”显然是一个冲突。 来自TZDB以外的组的区域ID的推荐格式为“group〜region”。 因此,如果定义了IATA数据,乌得勒支机场将是“IATA〜UTC”。
ZoneOffset子类使用仅存储UTC /格林威治的偏移量的专用格式。 
        A ZoneId可以在Java运行时反序列化,其中ID是未知的。 例如,如果服务器端Java运行时已经使用新的区域ID更新,但客户端Java运行时尚未更新。 在这种情况下, ZoneId对象会存在,并且可以使用被查询getId , equals , hashCode , toString , getDisplayName和normalized 。 但是,任何致电getRules都将失败, ZoneRulesException 。 该方法旨在允许在具有不完整时区信息的Java运行时上加载和查询ZonedDateTime但不进行修改。 
 这是一个value-based类; 使用身份敏感的操作(包括引用相等(的==上的实例),标识哈希码,或同步) ZoneId可具有不可预测的结果,应当避免。 equals方法应用于比较。 
ZoneOffset建模基于偏移的ID。 
        这种差异在序列化中可见。 
       | Modifier and Type | Field and Description | 
|---|---|
static Map<String,String> |  
           SHORT_IDS 
            
              区域覆盖的映射,以启用短时区名称。 
               |  
          
| Modifier and Type | Method and Description | 
|---|---|
boolean |  
           equals(Object obj) 
            
              检查此时区ID是否等于其他时区ID。 
               |  
          
static ZoneId |  
           from(TemporalAccessor temporal) 
            
              从时间对象获取一个 
               ZoneId的实例。 
             |  
          
static Set<String> |  
           getAvailableZoneIds() 
            
              获取一组可用的区域ID。 
               |  
          
String |  
           getDisplayName(TextStyle style, Locale locale) 
            
              获取区域的文字表示,例如“英国时间”或“+02:00”。 
               |  
          
abstract String |  
           getId() 
            
              获取唯一的时区ID。 
               |  
          
abstract ZoneRules |  
           getRules() 
            
              获取此ID的时区规则,允许执行计算。 
               |  
          
int |  
           hashCode() 
            
              此时区ID的哈希码。 
               |  
          
ZoneId |  
           normalized() 
            
              规范时区ID,尽可能 
               ZoneOffset 。 
             |  
          
static ZoneId |  
           of(String zoneId) 
            
              从ID获取一个 
               ZoneId的实例,确保该ID有效并且可供使用。 
             |  
          
static ZoneId |  
           of(String zoneId, Map<String,String> aliasMap) 
            
              获取 
               ZoneId的实例,使用其ID使用别名映射来补充标准区域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 。 该地图允许通过of(String, Map)工厂方法继续使用ID。 
此映射包含与TZDB 2005r及更高版本一致的ID映射,其中“EST”,“MST”和“HST”映射到不包括夏令时的ID。
这个地图如下:
public static ZoneId systemDefault()
 这查询TimeZone.getDefault()找到默认时区并将其转换为ZoneId 。 如果系统默认时区更改,则此方法的结果也会发生变化。 
DateTimeException - 转换后的区域ID是否格式无效 
           ZoneRulesException - 如果找不到转换的区域区域ID 
           public static Set<String> getAvailableZoneIds()
 该集合包括所有可用的基于区域的ID的字符串形式。 返回的集合中不包括基于偏移的区域ID。 该ID可以传递给of(String)以创建一个ZoneId 。 
区域ID的集合可以随着时间而增加,尽管在典型的应用中,ID集合是固定的。 每次调用此方法都是线程安全的。
public static ZoneId of(String zoneId, Map<String,String> aliasMap)
ZoneId实例,使用别名映射来补充标准区域ID。 
           时区的许多用户使用简短的缩写,例如“太平洋标准时间”的PST和“太平洋夏令时”的PDT。 这些缩写不是唯一的,因此不能用作ID。 该方法允许在应用程序内设置和重新使用字符串到时区的映射。
zoneId - 时区ID,不为空 
           aliasMap - 实际区域ID的别名区域ID(通常为缩写)的映射,不为空 
           DateTimeException - 如果区域ID的格式无效 
           ZoneRulesException - 如果区域ID是无法找到的区域ID 
           public static ZoneId of(String zoneId)
ZoneId的实例,确保该ID有效并且可以使用。 
            此方法解析产生一个ZoneId或ZoneOffset的ID。 如果ID为“Z”,则返回ZoneOffset ,或以“+”或“ - ”开头。 结果将始终是一个有效的ID, 可以获得ZoneRules 。 
解析如下一步地匹配区域ID。
ZoneOffset.UTC 。 DateTimeException 。 ZoneOffset使用ZoneOffset.of(String)将该ID解析为ZoneOffset 。 ZoneId ,其ID和规则相当于ZoneOffset.UTC 。 ZoneOffset 。 其结果将是一个ZoneId与指定UTC / GMT / UT前缀和归一化的偏移ID作为每ZoneOffset.getId() 。 返回的ZoneId的规则将相当于已解析的ZoneOffset 。 [A-Za-z][A-Za-z0-9~/._+-]+否则DateTimeException被抛出。 如果区域ID不在配置的ID ZoneRulesException ,则会抛出ZoneRulesException 。 区域ID的详细格式取决于提供数据的组。 默认数据集由IANA时区数据库(TZDB)提供。 它具有“{area} / {city}”形式的区域ID,例如“Europe / Paris”或“America / New_York”。 这与TimeZone的大多数ID 兼容 。 zoneId - 时区ID,不为空 
           DateTimeException - 区域ID是否格式无效 
           ZoneRulesException - 如果区域ID是无法找到的区域ID 
           public static ZoneId ofOffset(String prefix, ZoneOffset offset)
ZoneId的实例。 
            如果前缀为“GMT”,“UTC”或“UT”,则ZoneId具有前缀和非零偏移量的ZoneId 。 如果前缀为空"" ,则返回ZoneOffset 。 
prefix - 时区ID,不为空 
           offset - 偏移量,不为空 
           IllegalArgumentException - 如果前缀不是“GMT”,“UTC”或“UT”或“” 
           public static ZoneId from(TemporalAccessor temporal)
ZoneId的实例。 
            这获得了基于指定时间的区域。 A TemporalAccessor表示一个任意的日期和时间信息集,该工厂转换为ZoneId一个实例。 
 A TemporalAccessor表示某种形式的日期和时间信息。 该工厂转换任意时间对象的实例ZoneId 。 
 转换将尝试以有利于基于偏移的区域上的基于区域的区域使用TemporalQueries.zone()获取区域。 
 该方法中,功能接口的签名相匹配TemporalQuery允许它在通过方法参考,查询中使用ZoneId::from 。 
temporal - 要转换的时间对象,不为null 
           DateTimeException - 如果无法转换为 
            ZoneId 
           public abstract String getId()
 此ID唯一地定义了该对象。 基于偏移的ID的格式由ZoneOffset.getId()定义。 
public String getDisplayName(TextStyle style, Locale locale)
style - 所需文本的长度,不为空 
           locale - 要使用的语言环境,不为空 
           public abstract ZoneRules getRules()
规则提供与时区相关联的功能,例如查找给定即时或本地日期时间的偏移量。
 如果在Java运行时反序列化时区,则该时区不能与存储它的Java运行时加载相同的规则。 在这种情况下,调用此方法会抛出一个ZoneRulesException 。 
 规则由ZoneRulesProvider提供。 高级提供商可以支持规则的动态更新,而无需重新启动Java运行时。 如果是这样,则该方法的结果可能会随时间而变化。 每个单独的呼叫仍将保持线程安全。 
 ZoneOffset将始终返回一组规则,其中偏移量不会更改。 
ZoneRulesException - 如果没有规则可用于此ID 
           public ZoneId normalized()
ZoneOffset 。 
            返回一个归一化的ZoneId可以用来代替这个ID。 结果将具有ZoneRules相当于该对象返回的结果,但是由getId()返回的ID可能不同。 
 规范化检查此ZoneId的规则是否具有固定的偏移量。 如果他们这样做,则ZoneOffset等于该偏移的ZoneOffset 。 否则返回this 。 
public boolean equals(Object obj)
比较是基于ID。
equals在 
            Object 
           obj - 要检查的对象,null返回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.