一个简单的工具类,用于获取两个日期之间的工作日,由此可知工作日的天数和工作日的月号。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
public class WorkDayUtils {
/**
* 获取两个日期之间的工作日
* @param date1 开始时间
* @param date2 结束时间
* @return 工作日日期
*/
public static List<String> getWorkDays(String date1, String date2) {
List<String> workDays = new ArrayList<>();
if (StringUtils.isBlank(date1) || StringUtils.isBlank(date2)) {
return workDays;
}
List<String> allDays = new ArrayList<>();
int dayTime = 24 * 60 * 60 * 1000;
long d1 = parseDate(date1).getTime();
long d2 = parseDate(date2).getTime();
while (d2 >= d1) {
String time = DateFormatUtils.format(new Date(d1), "yyyy-MM-dd");
allDays.add(time);
d1 += dayTime;
}
Calendar calendar = Calendar.getInstance();
for (String str : allDays) {
calendar.setTime(parseDate(str));
int week = calendar.get(Calendar.DAY_OF_WEEK);
if (week != Calendar.SUNDAY && week != Calendar.SATURDAY) {
workDays.add(str);
}
}
return workDays;
}
public static Date parseDate(String dateStr) {
try {
return DateUtils.parseDate(dateStr, "yyyy-MM-dd");
} catch (ParseException e) {
throw new RuntimeException(e.getMessage();
}
}
}