上班的日子算请假,放假的日子不算请假,计算请假天数也就是计算上班的天数。
一个日子有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)));
}
}