有一个包含开始时间和结束时间的数组,要求日期从早到晚有连贯性,不能出现重叠,用JAVA判断

package com.cfb.oa.m;

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

class DateRange {
    LocalDate start;
    LocalDate end;

    public DateRange(LocalDate start, LocalDate end) {
        this.start = start;
        this.end = end;
    }

    // Getters and setters omitted for brevity
}

public class DateRangeValidator {

    public static boolean validateDateRanges(List<DateRange> dateRanges) {
        if (dateRanges == null || dateRanges.isEmpty()) {
            return true; // No ranges to validate, consider it valid
        }

        DateRange previousRange = null;
        for (DateRange currentRange : dateRanges) {
            if (previousRange != null) {
                // Check for overlap
                if (!previousRange.end.isBefore(currentRange.start)) {
                    return false; // Overlap detected
                }
                // Check for continuity (no gap between ranges)
                if (!previousRange.end.isEqual(currentRange.start.minusDays(1))) {
                    return false; // Gap detected, not continuous
                }
            }
            previousRange = currentRange;
        }

        return true; // No overlaps or gaps detected
    }

    public static void main(String[] args) {
        List<DateRange> dateRanges = new ArrayList<>();
        dateRanges.add(new DateRange(LocalDate.of(2023, 10, 1), LocalDate.of(2023, 10, 5)));
        dateRanges.add(new DateRange(LocalDate.of(2023, 10, 8), LocalDate.of(2023, 10, 10)));
        // Add more date ranges as needed, ensuring they are continuous and non-overlapping

        boolean isValid = validateDateRanges(dateRanges);
        System.out.println("Date ranges are valid: " + isValid);
    }
}

 

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