Java 中获取日期范围

10 Sept 2024 | 4 分钟阅读

在 Java 中,有多种方法可以检索日期范围。最常见的选择是使用 Java 标准库中的内置类,例如 LocalDate 类,或者第三方库,例如 Joda-Time 或 Java 8 中引入的较新的 Java Time API。

在本节中,我们将讨论在 Java 中获取日期范围的各种技术,并提供每个技术的使用示例。

1. 使用 LocalDate 类

LocalDate 是一个 Java 内置类,表示一个不带时间组件的日期。它是 java.time 包的一部分,该包在 Java 8 中引入。

输出

Number of days between 2022-01-01 and 2022-12-31 is 31

解释

我们可以通过两种方式使用 LocalDate 来检索日期范围。该代码创建两个表示开始日期和结束日期的 LocalDate 对象,并使用 ChronoUnit.DAYS.between() 函数计算它们之间的天数。

DateArray.java

输出

Number of days between 2023-05-01 and 2023-05-12 is 11
2023-05-01
2023-05-02
2023-05-03
2023-05-04
2023-05-05
2023-05-06
2023-05-07
2023-05-08
2023-05-09
2023-05-10
2023-05-11

2. 使用 Calendar 类

Java 中的 Calendar 类是一个遗留类,它通过包含年、月、日、时、分、秒等字段来表示日期和时间。

要检索日期范围,请创建两个表示开始日期和结束日期的 Calendar 对象,然后使用循环遍历它们之间的日期。

DateRangeExample.java

输出

Sat Jan 01 00:00:00 GMT 2022
Sun Jan 02 00:00:00 GMT 2022
Mon Jan 03 00:00:00 GMT 2022
Tue Jan 04 00:00:00 GMT 2022
Wed Jan 05 00:00:00 GMT 2022
Thu Jan 06 00:00:00 GMT 2022
Fri Jan 07 00:00:00 GMT 2022
Sat Jan 08 00:00:00 GMT 2022
Sun Jan 09 00:00:00 GMT 2022
Mon Jan 10 00:00:00 GMT 2022
Tue Jan 11 00:00:00 GMT 2022
Wed Jan 12 00:00:00 GMT 2022
Thu Jan 13 00:00:00 GMT 2022
Fri Jan 14 00:00:00 GMT 2022
Sat Jan 15 00:00:00 GMT 2022

解释

开始日期和结束日期表示为 LocalDate 对象,并使用 ChronoUnit 类计算它们之间的差值。此代码创建两个 Calendar 对象来表示开始日期和结束日期,然后使用 while 循环和 Calendar.add() 函数遍历它们之间的日期。

3. 使用 java.time.Period 类

该函数使用了 java.time.Period 类。Period 类定义了两年、月和日之间的时间跨度。以下是一些代码来演示此方法

PeriodDate.java

输出

Number of days between 2023-06-05 and 2023-06-22 is: 17
2023-06-05
2023-06-06
2023-06-07
2023-06-08
2023-06-09
2023-06-10
2023-06-11
2023-06-12
2023-06-13
2023-06-14
2023-06-15
2023-06-16
2023-06-17
2023-06-18
2023-06-19
2023-06-20
2023-06-21
2023-06-22

解释

在此代码中,我们使用 LocalDate.of() 函数创建两个表示开始日期和结束日期的 LocalDate 对象。然后使用 Period.between() 函数计算两个日期之间的期间,该函数返回一个表示两个日期之间时间间隔的持续时间对象。

然后使用 Period 对象检索年、月和日。可以使用 getYears()、getMonths() 和 getDays() 方法。