一段日期区间 我怎么找出这段时间的工作时间和非工作时间

8:30-11:30 13:30-17:30为工作时间,其他时间为非工作时间,前端传来一个开始时间和一个结束时间,这段时间可以为多天,怎么找出这段时间中每一天的工作时间和非工作时间,求指点

import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Period;

public class WorkTimeCalculator {

    public static void calculateWorkTime(LocalDateTime startDateTime, LocalDateTime endDateTime) {
        LocalDate startDate = startDateTime.toLocalDate();
        LocalDate endDate = endDateTime.toLocalDate();

        // 计算起始日期到结束日期之间的天数
        Period period = Period.between(startDate, endDate);
        int days = period.getDays() + 1;

        // 计算每一天的工作时间和非工作时间
        for (int i = 0; i < days; i++) {
            LocalDate currentDate = startDate.plusDays(i);
            boolean isWorkday = isWorkday(currentDate);

            if (isWorkday) {
                LocalTime workStartTime = LocalTime.of(8, 30);
                LocalTime workEndTime = LocalTime.of(17, 30);
                LocalDateTime workStartDateTime = LocalDateTime.of(currentDate, workStartTime);
                LocalDateTime workEndDateTime = LocalDateTime.of(currentDate, workEndTime);

                // 如果当前日期是起始日期,那么工作开始时间从传入的开始时间开始算起
                if (currentDate.equals(startDate)) {
                    workStartDateTime = startDateTime;
                }

                // 如果当前日期是结束日期,那么工作结束时间从传入的结束时间结束
                if (currentDate.equals(endDate)) {
                    workEndDateTime = endDateTime;
                }

                // 计算工作时间
                Duration workDuration = Duration.between(workStartDateTime, workEndDateTime);
                System.out.println(currentDate + " 的工作时间为:" + workDuration);
            } else {
                System.out.println(currentDate + " 是非工作日");
            }
        }
    }

    private static boolean isWorkday(LocalDate date) {
        // 假设周六、周日是非工作日
        return date.getDayOfWeek().getValue() < 6;
    }
}