Java中获取日期区间中所有日期

1.获取传入日期区间中所有日期

1.代码演示

    /**
     * 根据传入的日期,获取时间区间中所有的日期
     *
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return java.util.List<java.time.LocalDate>
     * @since 2022/3/2
     */
    @Test
    public static List<LocalDate> getAllDatesInTheDateRange(LocalDate startDate, LocalDate endDate) {
        List<LocalDate> localDateList = new ArrayList<>();
        // 开始时间必须小于结束时间
        if (startDate.isAfter(endDate)) {
            return null;
        }
        while (startDate.isBefore(endDate)) {
            localDateList.add(startDate);
            startDate = startDate.plusDays(1);
        }
        localDateList.add(endDate);
        return localDateList;
    }

2.结果验证

    public static void main(String[] args) {
        List<LocalDate> localDateList = getAllDatesInTheDateRange(LocalDate.of(2022, 2, 1), LocalDate.of(2022, 2, 28));
        if (CollectionUtils.isNotEmpty(localDateList)) {
            localDateList.forEach(System.out::println);
        }
// 结果输出 
2022-02-01
2022-02-02
2022-02-03
2022-02-04
2022-02-05
2022-02-06
2022-02-07
2022-02-08
2022-02-09
2022-02-10
2022-02-11
2022-02-12
2022-02-13
2022-02-14
2022-02-15
2022-02-16
2022-02-17
2022-02-18
2022-02-19
2022-02-20
2022-02-21
2022-02-22
2022-02-23
2022-02-24
2022-02-25
2022-02-26
2022-02-27
2022-02-28
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Java 8java.time.Period类计算两个日期之间的间隔。例如,下面的代码可以求出两个日期之间的yyyy-MM-dd格式的字符串: LocalDate start = LocalDate.parse("2020-01-01"); LocalDate end = LocalDate.parse("2020-02-01"); Period period = Period.between(start, end); String result = start.plus(period).toString(); System.out.println(result); // 2020-01-02 ### 回答2: 在Java,要求出两个日期区间的yyyy-MM-dd,可以通过使用日期相关的类库来实现。首先,你需要将两个日期转换为Java日期对象,然后根据需要的格式对日期进行格式化。 ```java import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { String startDateStr = "2021-01-01"; String endDateStr = "2021-12-31"; // 将日期字符串转换为LocalDate对象 LocalDate startDate = LocalDate.parse(startDateStr); LocalDate endDate = LocalDate.parse(endDateStr); // 定义日期格式化器,指定输出格式为yyyy-MM-dd DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 遍历日期区间,输出每个日期 LocalDate currentDate = startDate; while (!currentDate.isAfter(endDate)) { String formattedDate = currentDate.format(formatter); System.out.println(formattedDate); currentDate = currentDate.plusDays(1); } } } ``` 运行以上代码,将会输出区间内的所有日期,格式为yyyy-MM-dd。例如,对于输入的起始日期为2021-01-01,结束日期为2021-12-31,输出结果将会是: ``` 2021-01-01 2021-01-02 2021-01-03 ... 2021-12-30 2021-12-31 ``` 这样就能够求出给定日期区间的所有日期。 ### 回答3: 要求求出两个日期区间,可以使用Java的DateTime API来实现。假设我们有两个日期:startDate和endDate。 首先,我们需要使用SimpleDateFormat类将日期字符串解析为日期对象。代码如下: ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date startDate = sdf.parse("2021-01-01"); Date endDate = sdf.parse("2021-01-07"); ``` 接下来,我们可以使用Calendar类来计算日期区间。具体步骤如下: ```java // 使用Calendar类获取startDate和endDate的Calendar实例 Calendar startCalendar = Calendar.getInstance(); startCalendar.setTime(startDate); Calendar endCalendar = Calendar.getInstance(); endCalendar.setTime(endDate); // 创建一个ArrayList来存储日期区间 ArrayList<String> dateRange = new ArrayList<>(); // 循环遍历日期区间并将每个日期格式化为"yyyy-MM-dd"格式 while (startCalendar.before(endCalendar) || startCalendar.equals(endCalendar)) { dateRange.add(sdf.format(startCalendar.getTime())); startCalendar.add(Calendar.DATE, 1); } ``` 最后,我们可以将日期区间打印出来或者进行其他操作。例如,将日期区间打印到控制台: ```java for (String date : dateRange) { System.out.println(date); } ``` 以上代码将输出从"2021-01-01"到"2021-01-07"的日期区间: ``` 2021-01-01 2021-01-02 2021-01-03 2021-01-04 2021-01-05 2021-01-06 2021-01-07 ``` 这就是使用Java求出两个日期区间的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值