计算请假天数

上班的日子算请假,放假的日子不算请假,计算请假天数也就是计算上班的天数。

一个日子有3种情况:

1.法定节假日,放假。
2.国家规定加班日,上班 。
3.其它的日子:周一到周五上班,周六周日放假。

public boolean isWork(LocalDate date){
        if(isHoliday(date)){
            return false;
        }
        if(isWorkday(date)){
            return true;
        }
        return !isWeekend(date);

    }

2024年的节假日:

 public boolean isHoliday(LocalDate date){
        List<LocalDate> list=new ArrayList<>();
        list.add(LocalDate.parse("2024-01-01"));

        list.add(LocalDate.parse("2024-02-10"));
        list.add(LocalDate.parse("2024-02-11"));
        list.add(LocalDate.parse("2024-02-12"));
        list.add(LocalDate.parse("2024-02-13"));
        list.add(LocalDate.parse("2024-02-14"));
        list.add(LocalDate.parse("2024-02-15"));
        list.add(LocalDate.parse("2024-02-16"));
        list.add(LocalDate.parse("2024-02-17"));

        list.add(LocalDate.parse("2024-04-04"));
        list.add(LocalDate.parse("2024-04-05"));
        list.add(LocalDate.parse("2024-04-06"));

        list.add(LocalDate.parse("2024-05-01"));
        list.add(LocalDate.parse("2024-05-02"));
        list.add(LocalDate.parse("2024-05-03"));
        list.add(LocalDate.parse("2024-05-04"));
        list.add(LocalDate.parse("2024-05-05"));

        list.add(LocalDate.parse("2024-06-08"));
        list.add(LocalDate.parse("2024-06-09"));
        list.add(LocalDate.parse("2024-06-10"));

        list.add(LocalDate.parse("2024-09-15"));
        list.add(LocalDate.parse("2024-09-16"));
        list.add(LocalDate.parse("2024-09-17"));

        list.add(LocalDate.parse("2024-10-01"));
        list.add(LocalDate.parse("2024-10-02"));
        list.add(LocalDate.parse("2024-10-03"));
        list.add(LocalDate.parse("2024-10-04"));
        list.add(LocalDate.parse("2024-10-05"));
        list.add(LocalDate.parse("2024-10-06"));
        list.add(LocalDate.parse("2024-10-07"));

        if(list.contains(date)){
            return true;

        }
        return  false;
    }

2024年由于国家调休造成的上班的日子:

public  boolean isWorkday(LocalDate date){
        List<LocalDate> list=new ArrayList<>();
        list.add(LocalDate.parse("2024-02-04"));
        list.add(LocalDate.parse("2024-02-18"));

        list.add(LocalDate.parse("2024-04-07"));
        list.add(LocalDate.parse("2024-04-28"));

        list.add(LocalDate.parse("2024-05-11"));

        list.add(LocalDate.parse("2024-09-14"));
        list.add(LocalDate.parse("2024-09-29"));

        list.add(LocalDate.parse("2024-10-12"));
        if(list.contains(date)){
            return  true;
        }
        return  false;


    }

剩余的代码:

import org.joda.time.LocalDate;

import java.util.ArrayList;
import java.util.List;


public class Main {
    
   
    public  boolean isWeekend(LocalDate date){
        int dayOfWeek = date.getDayOfWeek();
        if(dayOfWeek==6||dayOfWeek==7){
            return true;
        }
        return false;
    }
    
    public int leaveDays(LocalDate begin,LocalDate end){
        int days=0;
        LocalDate date=begin;
        while(date.isBefore(end)){
            //处理日子
            if(isWork(date)){
                days++;
            }
            //日子加1
            date=date.plusDays(1);
        }
        if(isWork(end)){
            days++;
        }
        return days;
    }
    public static void main(String[] args) {
        Main main=new Main();
        LocalDate parse = LocalDate.parse("2024-03-21");
        System.out.println(main.leaveDays(parse, parse.plusDays(3)));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值