Java ZoneId类

Java ZoneId类用于指定时区标识符,并提供了在Instant和LocalDateTime之间进行转换的规则。它继承自Object类并实现了Serializable接口。

有两种类型的ID:

  1. 固定偏移量是完全解析的相对于UTC/Greenwich的偏移量,适用于所有本地日期时间。
  2. 地理区域是应用于确定相对于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

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想