packagecom.utouu.uphone.commons;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Calendar;importjava.util.Date;importjava.util.Iterator;importjava.util.List;importorg.springframework.stereotype.Component;/*** 获取工作日
*
创建日期:2016年7月21日
* Copyright 2016 UTOUU All Rights Reserved
*@authorzhushuangshuang
*@since1.0
*@version1.0*/@Componentpublic classGetWorkDay {/*** 获取两个时间之内的工作日时间(只去掉两个日期之间的周末时间,法定节假日未去掉)
*
*@paramstart
* -起始时间,共有3个重载方法,可以传入long型,Long型,与Date型
*@paramend
* -结束时间,共有3个重载方法,可以传入long型,Long型,与Date型
*@returnLong型时间差对象*/
/*public static void main(String[] args) {
GetWorkDay g=new GetWorkDay();
List initHoliday;
try {
initHoliday = g.initHoliday();
double days = g.getWorkdayTimeInMillisExcWeekendHolidays("2016-06-30 17-12-53","2016-08-30 11-27-50","yyyy-MM-dd HH-mm-ss",initHoliday);
double formateToDay = g.formateToDay(days);
String formatDuring = g.formatDuring(days);
System.out.println(formateToDay);
System.out.println(formatDuring);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}*/
private double getWorkdayTimeInMillis(long start, longend,
ListlistHolidays) {//如果起始时间大于结束时间,将二者交换
if (start >end) {long temp =start;
start=end;
end=temp;
}//根据参数获取起始时间与结束时间的日历类型对象
Calendar sdate =Calendar.getInstance();
Calendar edate=Calendar.getInstance();
sdate.setTimeInMillis(start);
edate.setTimeInMillis(end);//计算指定时间段内法定节假日天数的毫秒数
long holidays = 0;if (listHolidays != null) {
holidays=getHolidaysInMillis(start, end, listHolidays);
listHolidays.clear();
}//如果两个时间在同一周并且都不是周末日期,则直接返回时间差,增加执行效率
if ((sdate.get(Calendar.YEAR) ==edate.get(Calendar.YEAR))&& (sdate.get(Calendar.WEEK_OF_YEAR) ==edate
.get(Calendar.WEEK_OF_YEAR))&& (sdate.get(Calendar.DAY_OF_WEEK) != 1 &&sdate
.get(Calendar.DAY_OF_WEEK)!= 7)&& (edate.get(Calendar.DAY_OF_WEEK) != 1 &&edate
.get(Calendar.DAY_OF_WEEK)!= 7)) {return new Long(end - start -holidays);
}//如果两个时间在同一周并且都是周末日期,则直接返回0
if ((sdate.get(Calendar.YEAR) ==edate.get(Calendar.YEAR))&& (sdate.get(Calendar.WEEK_OF_YEAR) ==edat