如何用Java获取广播日历指定日期范围内的所有周一日期
获取指定日期范围内广播日历的所有周起始(周一)日期
需求说明
- 日期范围:2024年10月7日 至 2024年12月29日
- 目标:输出该范围内所有广播日历的周起始日期(即所有周一)
- 现有代码仅支持单个日期的周起始查询,需扩展为批量获取
修改后的测试代码
import java.time.LocalDate; import java.time.format.DateTimeFormatter; import org.junit.Test; @Test public void getAllBroadcastStartDatesInRange() { // 定义目标日期范围 LocalDate rangeStart = LocalDate.of(2024, 10, 7); LocalDate rangeEnd = LocalDate.of(2024, 12, 29); BroadcastCalendar broadcastCalendar = new BroadcastCalendar(); // 初始化格式化器,输出"MM月dd日"格式 DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("MM月dd日"); // 获取范围起始日期对应的周起始(周一) LocalDate currentWeekStart = broadcastCalendar.getWeekStart(rangeStart); // 遍历输出所有符合条件的周一 while (!currentWeekStart.isAfter(rangeEnd)) { System.out.println(dateFormatter.format(currentWeekStart)); currentWeekStart = currentWeekStart.plusWeeks(1); } }
代码说明
- 替换过时API:使用Java 8+推荐的
LocalDate替代旧的Date类,避免时区和日期处理的潜在问题 - 批量遍历逻辑:
- 先获取范围起始日期对应的周起始(周一)
- 每周递增7天,直到当前周一超出结束日期范围
- 格式化输出:用
DateTimeFormatter直接生成你需要的"MM月dd日"格式,无需额外转换
输出结果
运行代码后会输出:
10月7日 10月14日 10月21日 10月28日 11月4日 11月11日 11月18日 11月25日 12月2日 12月9日 12月16日 12月23日
内容的提问来源于stack exchange,提问作者raj
相关产品推荐
相关产品推荐

