笔记:
需求分析:
每周上班6天
夏季
早上8:30-12:00
下午14:00-17:30
冬季
早上8:30-12:00
下午14:30-18:00
请假最低为半天
按照上午8:00-12:00,下午14:00-18:00计算,包括了夏季和冬季时间,规律分布如下
public String getDouble(HttpServletRequest request) throws ParseException {
//参数格式,前端使用layui框架
//String endTime ="Wed Jan 01 2020 00:00:00 GMT+0800 (中国标准时间)";
//String startTime ="Tue Dec 31 2019 00:00:00 GMT+0800 (中国标准时间)";
String startTime = request.getParameter("startTime");
String endTime = request.getParameter("endTime");
Double num=0d;//请假天数;
//转成date
Date start = new Date(startTime);
Date end = new Date(endTime);
//调用Calendar 类
Calendar cStart=Calendar.getInstance();
Calendar cEnd=Calendar.getInstance();
cStart.setTime(start);
cEnd.setTime(end);
//获取两个时间的毫秒值
long endSeconds = cEnd.getTimeInMillis();
long startSeconds = cStart.getTimeInMillis();
//判断结束时间是否大于开始时间
if (endSeconds<startSeconds){
return "fail";
}
//计算小时差值
double hourNum=(endSeconds-startSeconds)/1000/60/60;
//获取开始和结束时间是一年的第几周,判断是否是同一周,
// 如果一周跨年,则这周算新一年的第一周
int weekEndNum = cEnd.get(Calendar.WEEK_OF_YEAR);
int weekStartNum = cStart.get(Calendar.WEEK_OF_YEAR);
while (true){
if (hourNum<=24){
if (hourNum<=4){//半天
num=num+0.5;
break;
}
if (hourNum<=24&&hourNum>4){//1天
num=num+1;
break;
}
}else if (hourNum>24){
hourNum = hourNum - 24;
num++;
}
}
int week = weekEndNum - weekStartNum;
num=num-week;//跨几周,减去几天
return num+"";
}