public int calLeaveDays(Date startTime, Date endTime){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
int leaveDays = 0;
Date flag = startTime;//设置循环开始日期
Calendar cal = Calendar.getInstance();
while(flag.compareTo(endTime)!=1){
cal.setTime(flag);
int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
String ff = format.format(cal.getTime());
if(week == 0 || week == 6){
//为周六日的工作日
int gzr = zysxMapper.getHoliday(ff,0);
if(gzr > 0){
leaveDays = leaveDays + 1;
cal.add(Calendar.DAY_OF_MONTH, +1);
flag = cal.getTime();
continue;
}else{
//跳出循环进入下一个日期
cal.add(Calendar.DAY_OF_MONTH, +1);
flag = cal.getTime();
continue;
}
}
try{
int count = zysxMapper.getHoliday(ff,1);
if (count > 0){
cal.add(Calendar.DAY_OF_MONTH, +1);
flag = cal.getTime();
continue;
}
}catch (Exception e){
e.printStackTrace();
}
//不是节假日或者周末,天数+1
leaveDays = leaveDays + 1;
//日期往后加一天
cal.add(Calendar.DAY_OF_MONTH, +1);
flag = cal.getTime();
}
return leaveDays;
}
java计算两个日期间的工作日
最新推荐文章于 2024-06-25 11:17:07 发布