有一个包含开始日期和结束日期的数组,获取最小的日期和最大的日期,用java实现

package com.cfb.oa.m;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

class DateRange {
    LocalDate startDate;
    LocalDate endDate;

    public DateRange(LocalDate startDate, LocalDate endDate) {
        this.startDate = startDate;
        this.endDate = endDate;
    }

    // Getters for startDate and endDate
    public LocalDate getStartDate() {
        return startDate;
    }

    public LocalDate getEndDate() {
        return endDate;
    }
}

public class DateRangeUtils {

    public static LocalDate findMinStartDate(List<DateRange> dateRanges) {
        if (dateRanges == null || dateRanges.isEmpty()) {
            throw new IllegalArgumentException("Date range list cannot be null or empty");
        }
        LocalDate minStartDate = LocalDate.MAX; // 初始化为LocalDate的最大可能值
        for (DateRange dateRange : dateRanges) {
            LocalDate startDate = dateRange.getStartDate();
            if (startDate.isBefore(minStartDate)) {
                minStartDate = startDate;
            }
        }
        return minStartDate;
    }

    public static LocalDate findMaxEndDate(List<DateRange> dateRanges) {
        if (dateRanges == null || dateRanges.isEmpty()) {
            throw new IllegalArgumentException("Date range list cannot be null or empty");
        }
        LocalDate maxEndDate = LocalDate.MIN; // 初始化为LocalDate的最小可能值
        for (DateRange dateRange : dateRanges) {
            LocalDate endDate = dateRange.getEndDate();
            if (endDate.isAfter(maxEndDate)) {
                maxEndDate = endDate;
            }
        }
        return maxEndDate;
    }

    public static void main(String[] args) {
        List<DateRange> dateRanges = new ArrayList<>();
        dateRanges.add(new DateRange(LocalDate.of(2023, 1, 15), LocalDate.of(2023, 1, 20)));
        dateRanges.add(new DateRange(LocalDate.of(2022, 12, 10), LocalDate.of(2022, 12, 15)));
        dateRanges.add(new DateRange(LocalDate.of(2023, 3, 5), LocalDate.of(2023, 3, 10)));

        LocalDate minStartDate = findMinStartDate(dateRanges);
        LocalDate maxEndDate = findMaxEndDate(dateRanges);

        System.out.println("Minimum start date: " + minStartDate);
        System.out.println("Maximum end date: " + maxEndDate);
    }
}

 

posted @ 2025-01-18 19:44  香巴拉  阅读(66)  评论(0)    收藏  举报