New Date-Time API in Java 8

2025 年 3 月 28 日 | 阅读 3 分钟

旧的 java.Date 类 功能实际上并不丰富,Java 8 引入了新的日期时间 API。util.Date 和 java.util.Calendar 类。早期的类不是不变的;它们不是为多线程设计的,并且有复杂且容易出错的方法。

为了解决这些问题,Java 8 提供了一个更广泛、更强大、更易于使用的日期和时间 API,它也是线程安全的且不可修改的。新的 API 属于 java.hour 包。这似乎是 java.net 上一个已存档的用户到用户组的内部链接。

这是现在已存档的用户到用户组 java.net 的时间包的内部链接,它包含有助于使日期和时间操作更轻松便捷的类。

Java 8 日期时间 API 的关键组件

1. LocalDate、LocalTime 和 LocalDateTime 类: 这三个类分别用于表示日期、时间和日期和时间。与旧的 Date 类不同,这些类是不可变的且线程安全的。

  • LocalDate:仅表示日期(无时间)。示例:2024-09-17
  • LocalTime:仅表示时间(无日期)。示例:14:25:30
  • LocalDateTime:同时表示日期和时间。示例:2024-09-17T14:25:30

文件名:DateTimeExample.java

输出

 
Current Date: 2024-09-17
Current Time: 13:55:02.882386
Current Date and Time: 2024-09-17T13:55:02.883300
Specific Date: 2024-09-17
Specific Time: 14:25:30   

2. ZonedDateTime 和 ZoneId ZonedDateTime 类: 这些是带有特定时区的日期和时间。当处理跨全球使用的应用程序时,它很有用,软件可能需要进行时间调整。ZoneId 类描述了时区,并包含诸如夏令时更改之类的属性。

文件名:ZonedDateTimeExample.java

输出

 
Current Date and Time with Time Zone: 2024-09-17T13:59:07.758014Z[GMT]
Date and Time in Asia/Kolkata Time Zone: 2024-09-17T19:29:07.862078+05:30[Asia/Kolkata]   

3. Instant 类: Instant 类表示时间线上的一个特定时刻(一个时间点)。它有助于表示机器时间戳和计算时间差。

文件名:InstantExample.java

输出

 
Current Instant: 2024-09-17T14:01:36.875676Z
Specific Instant: 2021-08-25T10:40:00Z   

操作日期和时间

日期和时间值也可以通过此新 API 提供的​​方法进行修改。此外,您可以使用 plusDays()、minusMonths() 等方法,为日期添加或减去天数、月数等;实际上,这些方法会创建新的实例/dateTime 对象,而不会修改作为参数传递的实例/dateTime 对象

文件名:DateManipulation.java

输出

 
Date after 10 days: 2024-09-27
Date 3 months ago: 2024-06-17   

结论

Java 8 中的日期时间 API 是新的,由于其优雅、不可变和非同步的特性,它解决了旧日期时间类的许多问题。该 API 也更简单,包括表示日期和时间的清晰类,如 LocalDate、LocalTime 和 ZonedDateTime,同时包含用于构建、操作、格式化和解析日期和时间的丰富方法。

这些增强功能使开发人员能够更轻松地满足日期和时间的预期,并执行所需的操作。