Java 中的 java.time.ZoneId 类详解

ZoneId 主要用于识别那些将 LocalDateTime(本地日期时间)与 Instant(时间戳)进行相互转换的规则。而描述偏移量何时变化以及如何变化的实际规则,则是由 ZoneRules 定义的。这个类本质上只是一个 ID,我们用它来获取底层的规则。之所以采用这种设计,是因为政府定义的规则并经常更改,而 ID 则是相对稳定的。

ID 主要分为两种不同的类型:

  • 固定偏移量:这是一个完全解析好的、相对于 UTC/Greenwich 的偏移量,对于所有本地日期时间,它都使用相同的偏移量。
  • 地理区域:这是一个区域,在该区域内,适用一组特定的规则来确定相对于 UTC/Greenwich 的偏移量。

> java.time.ZoneId 类的声明

>

> public abstract class ZoneId extends Object implements Serializable

这里有一个用于覆盖的时区映射,旨在允许我们使用短时区名称。不过,在 java.util.TimeZone 中,使用短时区 ID 的方式已经被废弃了。但通过这个映射,我们依然可以通过 of(String, Map) 工厂方法来使用这些 ID。该映射包含的 ID 关系与 TZDB 2005r 及以后版本保持一致,其中 ‘EST‘、‘MST‘ 和 ‘HST‘ 映射到的 ID 不包含夏令时。

具体的映射关系如下表所示:

EST

05:00

HST

10:00

MST

07:00

ACT

Australia/Darwin

AET

Australia/Sydney

AGT

America/Argentina/BuenosAires

ART

Africa/Cairo

AST

America/Anchorage

BET

America/SaoPaulo

BST

Asia/Dhaka

CAT

Africa/Harare

CNT

America/StJohns

CST

America/Chicago

CTT

Asia/Shanghai

EAT

Africa/AddisAbaba

ECT

Europe/Paris

IET

America/Indiana/Indianapolis

IST

Asia/Kolkata

JST

Asia/Tokyo

MIT

Pacific/Apia

NET

Asia/Yerevan

NST

Pacific/Auckland

PLT

Asia/Karachi

PNT

America/Phoenix

PRT

America/PuertoRico

PST

America/LosAngeles

SST

Pacific/Guadalcanal

VST

Asia/HoChiMinh注意: 该映射是不可修改的。

ZoneId 类的常用方法

方法

描述

equals(Object obj)

此方法检查此时区 ID 是否等于另一个时区 ID。

from(TemporalAccessor temporal)

此方法从时间对象获取 ZoneId 的实例。

getAvailableZoneIds()

此方法获取可用的时区 ID 集合。

getDisplayName(TextStyle style, Locale locale)

此方法获取区域的文本表示,例如 ‘英国时间‘ 或 ‘+02:00‘。

getId()

此方法获取唯一的时区 ID。

getRules()

此方法获取此 ID 的时区规则,以便进行计算。

hashCode()

返回此时区 ID 的哈希码。

normalized()

此方法规范化时区 ID,并在可能的情况下返回 ZoneOffset。

of(String zoneId)

此方法从 ID 获取 ZoneId 的实例,确保该 ID 有效且可用。

of(String zoneId, Map aliasMap)

此方法使用 ID 获取 ZoneId 的实例,并使用别名映射来补充标准时区 ID。

ofOffset(String prefix, ZoneOffset offset)

此方法获取封装了偏移量的 ZoneId 实例。

systemDefault()

此方法获取系统默认时区。

toString()

此方法使用 ID 将此时区输出为字符串。下面让我们来看一些方法的实现示例:

Java


CODEBLOCK_8c75f1fe

Output

22:34:11.044312
17:04:11.044385
false
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/31829.html
点赞
0.00 平均评分 (0% 分数) - 0