工作日计算方法 工作日加减

import java.text.ParseException;
import java.text.SimpleDateFormat;

import org.apache.commons.lang.time.DateUtils;

public class App {
	static SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd E");
    /**
     * 工作日计算类(工作日不包括周末和周六)
     * @param startDate:开始日期
     * @param addDay:需要增加的工作日数量
     * @param today:是否包含今天
     * @return java.util.Date
     */
    public static java.util.Date addWorkdays(java.util.Date startDate, int addDay,boolean today) {
    	if(today){
    		addDay--;
    	}
		int currentDayOfWeekInMonth = 1;
		int jumpDay = 0;
		int weekendCount = 0;
		java.util.Calendar c = new java.util.GregorianCalendar();
		c.setTime(startDate);
		if(c.get(java.util.Calendar.DAY_OF_WEEK) == 1) {
			jumpDay+=1;
			currentDayOfWeekInMonth = 1;
		}else if(c.get(java.util.Calendar.DAY_OF_WEEK) == 7) {
			jumpDay += 2;
			currentDayOfWeekInMonth = 1;
		}else {
			currentDayOfWeekInMonth = c.get(java.util.Calendar.DAY_OF_WEEK) - 1;
		}
		if(addDay <= (5 - currentDayOfWeekInMonth)) {
			weekendCount = 0;
		}else {
			weekendCount = (addDay - ((5 - currentDayOfWeekInMonth) + 1))/5 + 1;
		}
		jumpDay += (addDay + weekendCount * 2);
		c.add(java.util.Calendar.DAY_OF_MONTH, jumpDay);
		return c.getTime();
	}
    /**
     * 
     */
	public static void main(String[]a) throws ParseException{
		int w=15;
		 java.util.Date nowDate=new SimpleDateFormat("yyyy-MM-01").parse("2014-02-01");
		for(int i=0;i<29;i++){
			 java.util.Date date=DateUtils.addDays(nowDate, i);
			 java.util.Date _Date=addWorkdays(date,w,true);
			System.out.println(simpleDateFormat.format(date)+"  "+w+" 工作日后是  "+simpleDateFormat.format(_Date));
		}
	}
}
  
运行结果: 2014-02-01 星期六  15 工作日后是  2014-02-21 星期五
2014-02-02 星期日  15 工作日后是  2014-02-21 星期五
2014-02-03 星期一  15 工作日后是  2014-02-21 星期五
2014-02-04 星期二  15 工作日后是  2014-02-24 星期一
2014-02-05 星期三  15 工作日后是  2014-02-25 星期二
2014-02-06 星期四  15 工作日后是  2014-02-26 星期三
2014-02-07 星期五  15 工作日后是  2014-02-27 星期四
2014-02-08 星期六  15 工作日后是  2014-02-28 星期五
2014-02-09 星期日  15 工作日后是  2014-02-28 星期五
2014-02-10 星期一  15 工作日后是  2014-02-28 星期五
2014-02-11 星期二  15 工作日后是  2014-03-03 星期一
2014-02-12 星期三  15 工作日后是  2014-03-04 星期二
2014-02-13 星期四  15 工作日后是  2014-03-05 星期三
2014-02-14 星期五  15 工作日后是  2014-03-06 星期四
2014-02-15 星期六  15 工作日后是  2014-03-07 星期五
2014-02-16 星期日  15 工作日后是  2014-03-07 星期五
2014-02-17 星期一  15 工作日后是  2014-03-07 星期五
2014-02-18 星期二  15 工作日后是  2014-03-10 星期一
2014-02-19 星期三  15 工作日后是  2014-03-11 星期二
2014-02-20 星期四  15 工作日后是  2014-03-12 星期三
2014-02-21 星期五  15 工作日后是  2014-03-13 星期四
2014-02-22 星期六  15 工作日后是  2014-03-14 星期五
2014-02-23 星期日  15 工作日后是  2014-03-14 星期五
2014-02-24 星期一  15 工作日后是  2014-03-14 星期五
2014-02-25 星期二  15 工作日后是  2014-03-17 星期一
2014-02-26 星期三  15 工作日后是  2014-03-18 星期二
2014-02-27 星期四  15 工作日后是  2014-03-19 星期三
2014-02-28 星期五  15 工作日后是  2014-03-20 星期四
2014-03-01 星期六  15 工作日后是  2014-03-21 星期五

猜你喜欢

转载自kettas.iteye.com/blog/2018798
今日推荐