法定假日保存在集合中,需要手动录入,或者数据库查出后在放入里面,数据库查出格式为yyyy-MM-dd。

 /** * <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 {DateFormat df = new SimpleDateFormat("yyyy-MM-dd");Calendar ca = Calendar.getInstance();Date d = df.parse("2014-11-04");ca.setTime(d);//设置当前时间CalendarTest ct = new CalendarTest();ct.initHolidayList("2014-11-06");//初始节假日ct.initHolidayList("2014-11-07");//初始节假日ct.initHolidayList("2014-11-03");//初始节假日Calendar c = ct.addDateByWorkDay(ca,5);System.out.println(df.format(c.getTime()));} catch ( Exception e) {// TODO: handle exceptionSystem.out.println(e.getClass());e.printStackTrace();}}private static List<Calendar> holidayList = 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 Calendar addDateByWorkDay(Calendar calendar,int day){try {for (int i = 0; i < day; i++) {calendar.add(Calendar.DAY_OF_MONTH, 1);if(checkHoliday(calendar)){i--;}}return calendar;} catch (Exception e) {e.printStackTrace();}return calendar;}/*** * <p>Title: checkHoliday </P>* <p>Description: TODO 验证日期是否是节假日</P>* @param calendar  传入需要验证的日期* @return * return boolean    返回类型  返回true是节假日,返回false不是节假日* throws * date 2014-11-24 上午10:13:07*/public boolean checkHoliday(Calendar calendar) throws Exception{//判断日期是否是周六周日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 void initHolidayList( String date){String [] da = date.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);}

参考原文地址忘记了,原作者不好意思哈。

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

  1. java 计算工作日排除法定假日以及周末,增加指定工作日

    /*** <p>Title: main </P>* <p>Description: TODO </P>* @param args* return voi ...

  2. java计算工作日方法

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

  3. python 节假日_Python区分工作日、周末、法定假日的方法

    Python区分工作日.周末.法定假日的方法 2019-10-14 19:50:56 来源: 晴天小雨 0 摘要:工作中由于需要按工作日.周末的维度进行统计分析,故需要对给定的一段时间进行工作日.周末 ...

  4. js 计算当前时间和和一段时候后的工作日天数,排除周末和法定假日

    例:计算当前时间 过5个(设为N个工作日)工作日后的的日期. 思路: 获取当前系统时间 +n(n个工作日后) + 之间的周末和法定假日天数 因为法定假日是不变的 ,所以 首先我们将法定假日设定为一个数 ...

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

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

  6. java计算工作日_Java工作日计算工具类

    工作日计算工具类 主要功能:传入两个日期,返回这两个日期之间有多少个工作日. 思路: 预先设置好一定年份范围内的节假日.补休到map里.(这里暂时只设置了2017 - 2018年的) 将这个年份范围内 ...

  7. java 计算工作日工具类

    package com.b2bwings.cqjy.common.util;import org.apache.commons.lang.time.DateFormatUtils;import jav ...

  8. Java模块 -- 计算工作日 (Excel导入法定假日至数据库 排除周六 周日 法定假日) Calendar

    有一个小功能,要求是按照指定时间,计算出规定的工作日,排除国家法定节假日,周日,周六... 网上找了一些案例,但都算不准,但是它们的思路和方法可以借鉴下...于是一边想,一边改...就出来了.... ...

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

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

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

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

最新文章

  1. yii redirect
  2. 刷新页面 数组轮播
  3. Android之在ubuntu上用aapt查看apk的名字以及相关信息
  4. linux内核设计与实现 怎么读,《Linux内核设计与实现》CHAPTER1,2阅读梳理
  5. 一道哈夫曼二叉树题目--稍微容易一点
  6. Java 线程池的复用原理
  7. iOS:Tagged Pointer
  8. SQL注入-DNSlog注入(手工加工具使用)
  9. MICRO SIM卡 SIM小卡 尺寸图及剪卡图解
  10. 荔枝派Nano 全流程指南
  11. Caused by: java.lang.IllegalStateException: No ServletContext set
  12. vmware14克隆后UUID相同的解决方法
  13. 如何使用C语言播放音乐
  14. stm32 esp8266 ota升级-自建mqtt和文件服务器全量升级
  15. 如何设置word表格中文字与表格线之间的距离(缩短文字和上面表格线之间距离),让表格变得紧凑
  16. 分享一个会遮掩的吊炸天登录页面
  17. Python 字典学习总结(自学)
  18. 大数据 Linux 搭建(一)
  19. 水墨屏RFID超高频标签|RFID电子纸之组态软件操作说明2
  20. BugKu: 粉色的猫

热门文章

  1. 中国美女黑客攻击4G网络?详解
  2. ARM920T S3C2440 的中断系统
  3. matlab中的小于等于,ps中如何画出小于等于符号
  4. bzoj5369loj6433 [Pkusc2018]最大前缀和
  5. 企业竞争竞争情报系统的流程整合
  6. git基于某个分支新建分支
  7. 和高手相处,能让你觉得自己也变得…
  8. AXI3.0 AXI4.0 五大通道接口详细介绍
  9. Git学习笔记(基础操作+分支操作+PR)
  10. 震惊世界的中国秘方————里面的方子都是一个老中医几十年的心血!!!...