public static void main(String[] args) throws ParseException {
// String 转 date
Date starDate = DateUtils.parseDate("2019-03-16 00:00:00", DateConstants.YY_MM_DD);
Date endDate = DateUtils.parseDate("2019-08-16 00:00:00", DateConstants.YY_MM_DD);
System.out.println(getBetweenDate(starDate, endDate, "12....."));
}
private static List<Date> getBetweenDate(Date startDate, Date endDate, String opDays) {
Instant startInstant = startDate.toInstant();
Instant endInstant = endDate.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
// date 转 LocalDate
LocalDate start = startInstant.atZone(zoneId).toLocalDate();
LocalDate end = endInstant.atZone(zoneId).toLocalDate();
if (start.compareTo(end) > 0) {
return Collections.emptyList();
}
List<Date> list = Lists.newArrayList();
// 计算两个日期中间相隔天数
long distance = ChronoUnit.DAYS.between(start, end);
for (int i = 0; i < distance + 1; i++) {
LocalDate localDate = start.plusDays(i);
// 判断工作天是否包含
if (opDays.contains(String.valueOf(localDate.getDayOfWeek().getValue()))) {
list.add(Date.from(localDate.atStartOfDay(zoneId).toInstant()));
}
}
return list;
}
计算日期范围内的日期.包含周几
最新推荐文章于 2020-12-19 13:29:32 发布