Java教程-Java ZoneId类

Java ZoneId类
Java ZoneId类用于指定时区标识符,并提供了在Instant和LocalDateTime之间进行转换的规则。它继承自Object类并实现了Serializable接口。
有两种类型的ID:
- 固定偏移量是完全解析的相对于UTC/Greenwich的偏移量,适用于所有本地日期时间。
- 地理区域是应用于确定相对于UTC/Greenwich的偏移量的一组规则的区域。
Java ZoneId类声明
让我们看一下java.time.ZoneId类的声明。
public abstract class ZoneId extends Object implements Serializable
为了支持使用短时区名称,使用了区域映射覆盖。在java.util.TimeZone中,不鼓励使用短时区ID。但是,通过使用of(String, Map)工厂函数和映射,仍然可以使用这些ID。映射包含与TZDB 2005r及更高版本兼容的ID映射,其中'EST','MST'和'HST'对应的ID不包括夏令时。
Java ZoneId类的方法
方法 | 描述 |
---|---|
String getDisplayName(TextStyle style, Locale locale) | 用于获取时区的文本表示,例如“India Time”或“+05:30”。 |
abstract String getId() | 用于获取唯一的时区ID。 |
static ZoneId of(String zoneId) | 用于根据ID获取ZoneId的实例,确保ID有效并可供使用。 |
static ZoneId systemDefault() | 用于获取系统默认的时区。 |
boolean equals(Object obj) | 用于检查此时区ID是否与另一个时区ID相等。 |
static ZoneId from(TemporalAccessor temporal) | 从时间对象获取ZoneId的实例。 |
static Set getAvailableZoneIds() | 获取可用的时区ID集合。 |
abstract ZoneRules getRules() | 获取此ID的时区规则,允许进行计算。 |
int hashCode() | 返回此时区ID的哈希码。 |
ZoneId normalized() | 规范化时区ID,如果可能的话返回ZoneOffset。 |
static ZoneId of(String zoneId, Map aliasMap) | 使用别名映射获取ZoneId的实例,以补充标准时区ID。 |
static ZoneId ofOffset(String prefix, ZoneOffset offset) | 获取封装偏移量的ZoneId实例。 |
String toString() | 使用ID将此时区输出为字符串。 |
Java ZoneId类示例
ZoneIdExample1.java
import java.time.*;
public class ZoneIdExample1 {
public static void main(String... args) {
ZoneId zoneid1 = ZoneId.of("Asia/Kolkata");
ZoneId zoneid2 = ZoneId.of("Asia/Tokyo");
LocalTime id1 = LocalTime.now(zoneid1);
LocalTime id2 = LocalTime.now(zoneid2);
System.out.println(id1);
System.out.println(id2);
System.out.println(zoneid1.equals(zoneid2));
}
}
输出:
14:28:58.230
17:58:58.230
true
Java ZoneId类示例:systemDefault()
ZoneIdExample2.java
import java.time.*;
public class ZoneIdExample2 {
public static void main(String... args) {
ZoneId zoneid = ZoneId.systemDefault();
System.out.println(zoneid);
}
}
输出:
Asia/Kolkata
Java ZoneId类示例:getId()
ZoneIdExample3.java
import java.time.*;
public class ZoneIdExample3 {
public static void main(String... args) {
ZoneId zoneid = ZoneId.of("Asia/Kolkata");
String id = zoneid.getId();
System.out.println(id);
}
}
输出:
Asia/Kolkata
Java ZoneId类示例:getDisplayName()
ZoneIdExample4.java
import java.time.*;
public class ZoneIdExample4 {
public static void main(String... args) {
ZoneId zoneid = ZoneId.of("Asia/Kolkata");
String displayName = zoneid.getDisplayName(TextStyle.FULL, Locale.getDefault());
System.out.println(displayName);
}
}
输出:
India Time