java計算兩個日期之前的天數實例(排除節(jié)假日和周末)
如題所說,計算兩個日期之前的天數,排除節(jié)假日和周末。這里天數的類型為double,因為該功能實現的是請假天數的計算,有請一上午假的為0.5天。
不夠很坑的是每個日期都要查詢數據庫,感覺很浪費時間。
原則:
1.節(jié)假日存放在數據庫中
實現步驟:
1.循環(huán)每個日期
2.判斷每個日期是否為節(jié)假日或者為周末
3.若不是節(jié)假日和周末,天數+1
代碼:
public double calLeaveDays(Date startTime,Date endTime){ double leaveDays = 0; //從startTime開始循環(huán),若該日期不是節(jié)假日或者不是周六日則請假天數+1 Date flag = startTime;//設置循環(huán)開始日期 Calendar cal = Calendar.getInstance(); //循環(huán)遍歷每個日期 while(flag.compareTo(endTime)!=1){ cal.setTime(flag); //判斷是否為周六日 int week = cal.get(Calendar.DAY_OF_WEEK) - 1; if(week == 0 || week == 6){//0為周日,6為周六 //跳出循環(huán)進入下一個日期 cal.add(Calendar.DAY_OF_MONTH, +1); flag = cal.getTime(); continue; } //判斷是否為節(jié)假日 try{ //從數據庫查找該日期是否在節(jié)假日中 /*這里為數據庫操作*/ /*傳入該日期flag,使用sql語句判斷flag是否between節(jié)假日開始日期and節(jié)假日結束日期*/ /*count為從數據庫查出的行數*/ if (count > 0){ //跳出循環(huán)進入下一個日期 cal.add(Calendar.DAY_OF_MONTH, +1); flag = cal.getTime(); continue; } }catch (Exception e){ e.printStackTrace(); } //不是節(jié)假日或者周末,天數+1 leaveDays = leaveDays + 1; //日期往后加一天 cal.add(Calendar.DAY_OF_MONTH, +1); flag = cal.getTime(); } return leaveDays; }
以上這篇java計算兩個日期之前的天數實例(排除節(jié)假日和周末)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot對不同Bean注解的區(qū)別和使用場景說明
這篇文章主要介紹了SpringBoot對不同Bean注解的區(qū)別和使用場景說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03springboot整合websocket后啟動報錯(javax.websocket.server.ServerCont
這篇文章主要介紹了springboot整合websocket后啟動報錯(javax.websocket.server.ServerContainer not available),通過分析錯誤信息、排查代碼和配置,找出問題的根源,并給出相應的解決方案,感興趣的可以了解一下2024-01-01Springboot視頻接口報大量的ClientAbortException找不到原因的解決
本文主要介紹了Springboot視頻接口報大量的ClientAbortException找不到原因的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-08-08idea2020.2卡死在reading maven projects
這篇文章主要介紹了idea2020.2卡死在reading maven projects,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09Spring-cloud-eureka使用feign調用服務接口
這篇文章主要為大家詳細介紹了Spring-cloud-eureka使用feign調用服務接口,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04一文詳解如何配置MyBatis實現打印可執(zhí)行的SQL語句
在MyBatis中,動態(tài)SQL是一個強大的特性,允許我們在XML映射文件或注解中編寫條件語句,根據運行時的參數來決定SQL的具體執(zhí)行內容,這篇文章主要給大家介紹了關于如何配置MyBatis實現打印可執(zhí)行的SQL語句的相關資料,需要的朋友可以參考下2024-08-08