您好,登錄后才能下訂單哦!
如題所說,計算兩個日期之前的天數,排除節假日和周末。這里天數的類型為double,因為該功能實現的是請假天數的計算,有請一上午假的為0.5天。
不夠很坑的是每個日期都要查詢數據庫,感覺很浪費時間。
原則:
1.節假日存放在數據庫中
實現步驟:
1.循環每個日期
2.判斷每個日期是否為節假日或者為周末
3.若不是節假日和周末,天數+1
代碼:
public double calLeaveDays(Date startTime,Date endTime){ double leaveDays = 0; //從startTime開始循環,若該日期不是節假日或者不是周六日則請假天數+1 Date flag = startTime;//設置循環開始日期 Calendar cal = Calendar.getInstance(); //循環遍歷每個日期 while(flag.compareTo(endTime)!=1){ cal.setTime(flag); //判斷是否為周六日 int week = cal.get(Calendar.DAY_OF_WEEK) - 1; if(week == 0 || week == 6){//0為周日,6為周六 //跳出循環進入下一個日期 cal.add(Calendar.DAY_OF_MONTH, +1); flag = cal.getTime(); continue; } //判斷是否為節假日 try{ //從數據庫查找該日期是否在節假日中 /*這里為數據庫操作*/ /*傳入該日期flag,使用sql語句判斷flag是否between節假日開始日期and節假日結束日期*/ /*count為從數據庫查出的行數*/ 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計算兩個日期之前的天數實例(排除節假日和周末)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。