Java 政府 工作日计算
来源:互联网 发布:电脑软件开发培训中心 编辑:程序博客网 时间:2024/06/05 08:13
package com.jc.servlet;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;public class Test {//计算工作日实际日期@org.junit.Testpublic void test() { try { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Calendar ca = Calendar.getInstance(); Date d = df.parse("2016-12-8"); ca.setTime(d);//设置当前时间 initHolidayList("2014-11-06");//初始节假日 initHolidayList("2014-11-07");//初始节假日 initHolidayList("2014-11-03");//初始节假日 Calendar c = addDateByWorkDay(ca,3); System.out.println(df.format(c.getTime())); } catch ( Exception e) { // TODO: handle exception System.out.println(e.getClass()); e.printStackTrace(); }}@org.junit.Testpublic void test2 () throws Exception{String sdate = "2016-12-08";String edate = "2016-12-13";long day = getDaySub(sdate,edate);System.out.println(day);DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Calendar ca = Calendar.getInstance(); Date d = df.parse(sdate); ca.setTime(d);//设置当前时间 long gzr = endDay_startDay(ca,day);System.out.println(gzr);}/** * 两个日期相减 * @param beginDateStr * @param endDateStr * @return */public static long getDaySub(String beginDateStr,String endDateStr){long day=0;SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");Date beginDate;Date endDate;try{beginDate = format.parse(beginDateStr);endDate= format.parse(endDateStr);day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000);//System.out.println("相隔的天数="+day);} catch (ParseException e){// TODO 自动生成 catch 块e.printStackTrace();}return day+1;} /** * 自定义节假日 */ private static List<Calendar> holidayList = new ArrayList<Calendar>(); //节假日列表 /** * 计算一个日期后的多少天有几个休息日,并用使用天数减去工作日获得实际工作日。 * @param calendar * @param day * @return * @throws Exception */ public static long endDay_startDay(Calendar calendar,long day) throws Exception{ long result = 0; for (int i=0; i<day; i++){ calendar.add(Calendar.DAY_OF_MONTH, 1); if(checkHoliday(calendar)){ result++; } } return day-result-1; } /** * * <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 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; } /** * * @param calendar * @param day * @return */ public Calendar addDateDay(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 static 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 static 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); }/** * 判断星期六与星期日 * @param bDate * @param aDate * @return * @throws ParseException */public boolean isSunAndSatur(String bDate) throws ParseException{DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); //String bDate = "2016-12-19";//String aDate = "2016-12-30";Date bdate = format1.parse(bDate);Calendar cal = Calendar.getInstance();cal.setTime(bdate);if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY||cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){System.out.print("ok");return true;}else {System.out.print("no");return false;}}}
0 0
- Java 政府 工作日计算
- 只计算工作日 java
- java计算工作日方法
- 工作日计算
- 工作日计算
- 计算工作日
- java 计算工作日的。8小时制度
- Java时间之间的天数计算,工作日计算
- JAVA后台计算两个日期之间的工作日时间差
- java计算工作日,排除周末以及法定假日
- 转贴:工作日的计算
- execl 计算工作日
- 计算工作日函数
- SQL计算工作日
- 只计算工作日2
- Execl计算工作日
- oracle的工作日计算实例
- .net实现工作日的计算
- 常用的API
- Android手机UI设计---”知乎“界面外观模仿篇(一)---使用Fragment实现底部导航以及嵌套
- Android Studio打SDK或JAR
- Spring 简单案例(spring profile)_03
- cadence基础学习
- Java 政府 工作日计算
- perl 安装DB2::DBD
- Java Dom4j 解决中文乱码问题
- Java 实现斗地主扑克牌排序
- Android:打release包时遇到的一个花式报错-ZipException: duplicate entry:xx/xx/xx/xx.class
- Rect函数
- Java 字符串转 unicode
- 判断操作系统的位数
- JavaScript split方法简介