记录一下根据时间区间计算工作时间,同时去掉节假日周六日
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.*;
import java.util.ArrayList;
import java.util.List;
/**
* 工作时间计算
*
* @author
* @description:
* @date
*/
public class WorkTimeCalculate {
/**
* 上班时间
*/
private static final LocalTime WORKING_START_TIME = LocalTime.of(9, 0);
/**
* 下班时间
*/
private static final LocalTime WORKING_END_TIME = LocalTime.of(17, 0);
/**
* 午休开始时间
*/
private static final LocalTime NOON_BREAK_START_TIME = LocalTime.of(12, 0);
/**
* 午休结束时间
*/
private static final LocalTime NOON_BREAK_END_TIME = LocalTime.of(14, 0);
/**
* 调休日:非周末但是休息的日期列表
*/
private static final List<LocalDate> holidays = new ArrayList<>();
/**
* 补班日:周末但是上班的日期
*/
private static final List<LocalDate> workdays = new ArrayList();
//初始化调休日和补班日 后面可考虑从数据库查
static {
//调休日
holidays.add(LocalDate.of(2022, 1, 3));
holidays.add(LocalDate.of(2022, 1, 31));
holidays.add(LocalDate.of(2022, 2, 1));
holidays.add(LocalDate.of(2022, 2, 2));
holidays.add(LocalDate.of(2022, 2, 3));
holidays.add(LocalDate.of(2022, 2, 4));
holidays.add(LocalDate.of(2022, 4, 4));
holidays.add(LocalDate.of(2022, 4, 5));
holidays.add(LocalDate.of(2022, 5, 2));
holidays.add(LocalDate.of(2022, 5, 3));
holidays.add(LocalDate.of(2022, 5, 4));
holidays.add(LocalDate.of(2022, 6, 3));
holidays.add(LocalDate.of(2022, 9, 12));
holidays.add(LocalDate.of(2022, 10, 3));
holidays.add(LocalDate.of(2022, 10, 4));
holidays.add(LocalDate.of(2022, 10, 5));
holidays.add(LocalDate.of(2022, 10, 6));
holidays