Java 日期 OffsetDateTime

OffsetDateTime 是在 JDK8 中引入的,用于替代 java.util.Date

Date 与 OffsetDateTime

维度 Date OffsetDateTime
起始版本 JDK1.0 JDK8
安全性 非线程安全 线程安全
精度 毫秒 纳秒
toString() 格式 根据操作系统不同而不同 ISO-8601
时区 不支持 支持时区
private static void print(){
    System.out.println(new Date());
    System.out.println(OffsetDateTime.now());
}

将 Date 与 OffsetDateTime 打印在控制台:

Sat Apr 02 22:02:03 CST 2022
2022-04-02T22:02:03.822+08:00

Date 转 OffsetDateTime

将Date转换为OffsetDateTime非常简单。如果我们的日期是 UTC,我们可以用一个表达式来转换它:

Date date = new Date();
OffsetDateTime offsetDateTime = date.toInstant()
    .atOffset(ZoneOffset.UTC);

如果原始Date不是 UTC,我们可以提供偏移量,假设我们的原始日期是 +8:00

offsetDateTime = date.toInstant()
  .atOffset(ZoneOffset.ofHoursMinutes(8, 0));

OffsetDateTime 提供了许多可以在以后使用的有用方法。例如,我们可以简单地 getDayOfWeek()、getDayOfMonth() 和 getDayOfYear() 。用 isAfter 和 isBefore 方法比较两个 OffsetDateTime 对象也很容易。

转载请注明出处:码谱记录 » Java 日期 OffsetDateTime
标签: