筆記:
需求分析:
每週上班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+"";
}