/*** <p>Title: main </P>* <p>Description: TODO </P>* @param args* return void    返回类型* throws* date 2014-11-24 上午09:11:47*/
public static void main(String[] args) {try {List<String> dateStringList=new ArrayList<>();dateStringList.add("2018-10-01");dateStringList.add("2018-10-02");dateStringList.add("2018-10-03");dateStringList.add("2018-10-04");dateStringList.add("2018-10-05");dateStringList.add("2018-10-06");dateStringList.add("2018-10-07");List<String> specifiedDateList=new ArrayList<>();specifiedDateList.add("2018-09-29");specifiedDateList.add("2018-09-30");initHolidayList(dateStringList,specifiedDateList);DateFormat df = new SimpleDateFormat("yyyy-MM-dd");Calendar ca = Calendar.getInstance();Date d = df.parse("2018-9-27");ca.setTime(d);//设置当前时间Test1 ct = new Test1();String c = ct.addDateByWorkDay(ca,5);System.out.println(c);} catch ( Exception e) {// TODO: handle exceptione.printStackTrace();}}private static List<Calendar> holidayList = new ArrayList<Calendar>();  //节假日列表
private static List<Calendar> workList = new ArrayList<Calendar>();  //指定工作日期/**** <p>Title: addDateByWorkDay </P>* <p>Description: TODO  计算相加day天,并且排除节假日和周末后的日期</P>* @param calendar  当前的日期* @param day  相加天数* @return* return Calendar    返回类型   返回相加day天,并且排除节假日和周末后的日期* throws* date 2014-11-24 上午10:32:55*/
public static String addDateByWorkDay(Calendar calendar,int day){try {for (int i = 0; i < day; i++) {calendar.add(Calendar.DAY_OF_MONTH, 1);if(checkHoliday(calendar)){i--;}}} catch (Exception e) {e.printStackTrace();}DateFormat df = new SimpleDateFormat("yyyy-MM-dd");return  df.format(calendar.getTime());
}/**** <p>Title: checkHoliday </P>* <p>Description: TODO 验证日期是否是节假日</P>* @param calendar  传入需要验证的日期* @return* return boolean    返回类型  返回true是节假日,返回false不是节假日* throws* date 2014-11-24 上午10:13:07*/
public static boolean checkHoliday(Calendar calendar) throws Exception{//判断日期是否是指定工作日for (Calendar ca : workList) {if(ca.get(Calendar.MONTH) == calendar.get(Calendar.MONTH) &&ca.get(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH)&&ca.get(Calendar.YEAR) == calendar.get(Calendar.YEAR)){return false;}}//判断日期是否是周六周日if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY ||calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){return true;}//判断日期是否是节假日for (Calendar ca : holidayList) {if(ca.get(Calendar.MONTH) == calendar.get(Calendar.MONTH) &&ca.get(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH)&&ca.get(Calendar.YEAR) == calendar.get(Calendar.YEAR)){return true;}}return false;
}/**** <p>Title: initHolidayList </P>* <p>Description: TODO  把所有节假日放入list,验证前要先执行这个方法</P>* @param date  从数据库查 查出来的格式2014-05-09* return void    返回类型* throws* date 2014-11-24 上午10:11:35*/
public static  void initHolidayList(List<String> holidayDateList,List<String> specifiedDateList) {for (String string : holidayDateList) {String[] da = string.split("-");Calendar calendar = Calendar.getInstance();calendar.set(Calendar.YEAR, Integer.valueOf(da[0]));calendar.set(Calendar.MONTH, Integer.valueOf(da[1]) - 1);// 月份比正常小1,0代表一月calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(da[2]));holidayList.add(calendar);}for (String string : specifiedDateList) {String[] da = string.split("-");Calendar calendar = Calendar.getInstance();calendar.set(Calendar.YEAR, Integer.valueOf(da[0]));calendar.set(Calendar.MONTH, Integer.valueOf(da[1]) - 1);// 月份比正常小1,0代表一月calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(da[2]));workList.add(calendar);}
}
initHolidayList(List<String> holidayDateList,List<String> specifiedDateList)
我在这个方法里面加了一个指定工作日参数把网上别人提供的优化了一下,节假日和指定工作日要新建一个数据表,去维护信息。

转载地址:https://blog.csdn.net/u011789653/article/details/41541555#commentBox

java 计算工作日排除法定假日以及周末,增加指定工作日相关推荐

  1. java 算出下一个工作日,Java:计算一个日期加下指定工作日数(排除周六周日和一系列节日)...

    Java:计算一个日期加上指定工作日数(排除周六周日和一系列节日) 工作时遇到的,随便写了个,欢迎高手点评: 核心代码: package www.sjjjob.com.date; import jav ...

  2. java 判断日期是周末_java计算两个日期之前的天数实例(排除节假日和周末)

    如题所说,计算两个日期之前的天数,排除节假日和周末.这里天数的类型为double,因为该功能实现的是请假天数的计算,有请一上午假的为0.5天. 不够很坑的是每个日期都要查询数据库,感觉很浪费时间. 原 ...

  3. Java计算时间区间内工作日天数

    Java计算时间区间内工作日天数,并去除放假日与周末重叠数据 实际生活中,国家法定假日可能与周六周日重叠,所以需要去重.对于放假补班的特殊情况,需要另外补充 实际生活中,国家法定假日可能与周六周日重叠 ...

  4. 智能跳过节假日算法java_java计算两个日期之前的天数实例(排除节假日和周末)...

    java计算两个日期之前的天数实例(排除节假日和周末) 发布时间:2020-09-02 23:07:01 来源:脚本之家 阅读:108 作者:jingxian 如题所说,计算两个日期之前的天数,排除节 ...

  5. java计算时间的秒数差,去掉周末和节假日

    java计算时间的秒数差,去掉周末和节假日 如题所说,计算两个时间的秒数(工作日),拿到这个需求,首先想到的就是怎么去掉周末和节假日,或者两个时间有一个在周末或节假日,或者两个时间都在,要分别进行处理 ...

  6. Java 计算工作日,休假,调休,调班等

    /*** 用于判断n个工作日(排除节假日.周六日包含节后补班数据)后的日期* @param list 节假日数据源* @param weekDayList 节后补班数据源* @param today ...

  7. 智能跳过节假日算法java_java计算两个日期之间的天数,排除节假日和周末

    如题所说,计算两个日期之前的天数,排除节假日和周末.这里天数的类型为double,因为该功能实现的是请假天数的计算,有请一上午假的为0.5天. 不够很坑的是每个日期都要查询数据库,感觉很浪费时间. 原 ...

  8. java计算工作日方法

    java计算工作日,实测有效 public static Date getDate(Date currentDate, int days){Calendar calendar= Calendar.ge ...

  9. java计算时间差距_硬计算和软计算之间的差异

    java计算时间差距 什么是计算? (What is Computing?) The process of accomplishing a particular task with the help ...

最新文章

  1. 【STM32】端口复用和重映射,完全重映射,部分重映射
  2. iOS开发——图片转PDF的实现方法
  3. android获取毫秒,Android 日期转为为毫秒,毫秒转化为日期,获取当期日期年、月、日...
  4. 一加账号app_资讯知名种草App突然被大规模下架!官方回应
  5. 硬件断点 DrxHook
  6. 关于处理小数点位数的几个oracle函数
  7. mybatis-generator 逆向生成工具(实体、dao、sql)
  8. Socket通信 客户端加密数据,传递数据密文到服务端,服务端解密密文 输出明文
  9. 基于Bootstrap和animate.css的模态框动画效果
  10. Clojure 学习入门(4)- 字符串
  11. Cannot resolve com.oracle:ojdbc7:12.1.0.1
  12. 路由器OpenWRT、LEDE、潘多拉、华硕、梅林、老毛子系统区别和特点
  13. Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)
  14. 带通滤波器电路图设计(转)
  15. JSP综合开发实例——清爽夏日九宫格(DIV+CSS布局)
  16. 拉卡拉支付最新支付方式预览——刷脸支付上线
  17. CGAL 计算几何库
  18. 留人间多少爱,迎浮世千重变;和有情人,做快乐事, 别问是劫是缘
  19. python 跳过_python怎么跳过异常继续执行
  20. activemq在阿里云部署启动: java.net.UnknownHostException 异常处理

热门文章

  1. 版本管理:Subversion Edge:角色与权限控制
  2. [欧拉回路][状压dp] Jzoj P3290 吃货JYY
  3. 有哪些电视软件值得推荐(必备)?这3款错过后悔!
  4. 论文导读:DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution
  5. 计算机实验小学教导主任,一位小学教导主任的三重角色
  6. 【论文简述】Vis-MVSNet: Visibility-Aware Multi-view Stereo Network(IJCV 2022)
  7. 软件测试的前景怎么样
  8. 为什么每次启动Word总是进入“ 安全模式”?
  9. 苹果手机计算机按出错误,苹果手机现惊天Bug:iOS 11计算器竟会因手速太快而出错...
  10. 5G宏基站的形态5G基站长什么样?