java Date类型获取两个日期中间的所有日期
时间: 2024-01-24 14:01:39 浏览: 67
取两个日期之间的所有日期
5星 · 资源好评率100%
Java中的`Date`类型已经被标记为不推荐使用,建议使用Java 8的`LocalDate`类和相关的日期时间类。如果你需要使用`Date`类型,可以将`Date`类型转换为`LocalDate`类型,进行日期计算,再将结果转换回`Date`类型。具体实现如下:
```java
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Main {
public static void main(String[] args) {
Date startDate = Date.from(LocalDate.of(2021, 10, 1).atStartOfDay(ZoneId.systemDefault()).toInstant());
Date endDate = Date.from(LocalDate.of(2021, 10, 5).atStartOfDay(ZoneId.systemDefault()).toInstant());
List<Date> datesInRange = new ArrayList<>();
LocalDate start = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate end = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
for (LocalDate date = start; date.isBefore(end.plusDays(1)); date = date.plusDays(1)) {
Date currentDate = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
datesInRange.add(currentDate);
}
for (Date date : datesInRange) {
System.out.println(date);
}
}
}
```
输出结果:
```
Thu Oct 01 00:00:00 CST 2021
Fri Oct 02 00:00:00 CST 2021
Sat Oct 03 00:00:00 CST 2021
Sun Oct 04 00:00:00 CST 2021
Mon Oct 05 00:00:00 CST 2021
```
这里使用了Java 8的`LocalDate`类和相关的日期时间类来进行日期计算,再将结果转换回`Date`类型。注意,需要使用`ZoneId.systemDefault()`来指定时区,避免出现错误。
阅读全文