public static Map<Long, List<String>> getWeekList(Long startTime, Long endTime) {
// 获取两个时间戳之间的周
LocalDateTime start =
LocalDateTime.ofInstant(Instant.ofEpochMilli(startTime), ZoneId.systemDefault());
LocalDateTime end =
LocalDateTime.ofInstant(Instant.ofEpochMilli(endTime), ZoneId.systemDefault());
// 几周, 每周是哪几天
LocalDateTime tmp = start;
ChronoUnit unit = ChronoUnit.WEEKS;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
// 用于转换 周结束日期
TemporalAdjuster LAST_OF_WEEK = TemporalAdjusters.ofDateAdjuster(localDate -> localDate.plusDays(DayOfWeek.SUNDAY.getValue() - localDate.getDayOfWeek().getValue()));
Map<Long, List<String>> weekMap = Maps.newHashMap();
while (tmp.isBefore(end) || tmp.isEqual(end)) {
// 求 tmp 是哪一周
LocalDateTime endWeek = tmp.with(LAST_OF_WEEK); //开始周结束日期
List<String> list = new ArrayList<>();
weekMap.put(tmp.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(), list);
while (tmp.isBefore(endWeek) || tmp.isEqual(endWeek)) {
list.add(tmp.format(formatter));
tmp = tmp.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
}
}
return weekMap;
}
获取两个时间戳之间的 周以及每周包含哪几天
最新推荐文章于 2022-02-16 17:43:15 发布