我的日期范围是 2024 年 10 月 7 日到 2024 年 12 月 29 日。我需要获取广播日历的所有周开始日期,即该范围内的所有星期一日期。尝试做如下的事情。我只能开始一个日期,想扩展它以获取所有星期一日期的列表。 10 月 7 日 10 月 14 日 10 月 21 日 10 月 28 日 11 月 4 日 11 月 11 日 11 月 18 日 11 月 25 日 12 月 2 日 12月9日 12月16日 12 月 23 日
@Test
public void toBroadcastStartDate() {
Date dateFormate = new Date("Nov 05, 2024 12:00 AM EST");
BroadcastCalendar broadcastCalendar = new BroadcastCalendar();
LocalDate broadcastStartDate = broadcastCalendar.getWeekStart(Instant.ofEpochMilli(dateFormate.getTime()).atZone(ZoneId.of("UTC")).toLocalDate());
System.out.println("check here "+Date.from(broadcastStartDate.atStartOfDay(ZoneId.systemDefault()).toInstant()));
}
如果您知道您的开始日是星期一,您可以这样做。
var start = LocalDate.of(2024, 10, 7);
var end = LocalDate.of(2024, 12, 29);
var mondays = start.datesUntil(end, Period.ofWeeks(1)).toList();
System.out.println(mondays);
您可以简单地循环,直到当前日期匹配或超过结束日期。像这样的东西:
LocalDate startDate = LocalDate.of(2024, 10, 7);
LocalDate endDate = LocalDate.of(2024, 12, 29);
List<LocalDate> mondays = new ArrayList<>();
LocalDate monday = startDate.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY));
while (monday.isBefore(endDate) || monday.isEqual(endDate)) {
mondays.add(monday);
monday = monday.plusDays(7);
}
现在
mondays
包含2024年10月7日至2024年12月29日(含)之间的所有星期一。