/**
* 获取俩个时间段的最终结束时间(去掉周六日的有效结束时间)
*
* @param startTime 开始时间
* @param endTime 结束时间
* @return
*/
public static Date validEndTime(Date startTime, Date endTime) {
// 中间有多少天是周末
int leaveDays = 0;
// 开始日期
Calendar startCal = Calendar.getInstance();
// 结束时间
Calendar endCal = Calendar.getInstance();
// 从startTime开始循环遍历每个日期,若该日期不是周六日则天数+1
while (startTime.compareTo(endTime) != 1) {
startCal.setTime(startTime);
endCal.setTime(endTime);
// 判断是否为周六日
int week = startCal.get(Calendar.DAY_OF_WEEK) - 1;
if (week == 0 || week == 6) {// 0为周日,6为周六
// 跳出循环进入下一个日期
startCal.add(Calendar.DAY_OF_MONTH, +1);
// 结束时间+1
endCal.add(Calendar.DAY_OF_MONTH, +1);
endTime = endCal.getTime();
startTime = startCal.getTime();
// 是节假日或者周末,天数+1
leaveDays = leaveDays + 1;
continue;
}
// 日期往后加一天
startCal.add(Calendar.DAY_OF_MONTH, +1);
startTime = startCal.getTime();
}
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
System.out.println("有效结束时间:" + df.format(endTime));
System.out.println("周末天数:" + leaveDays + "天");
return endTime;
}
节假日接口:http://api.goseek.cn/