获取两个日期选择器和 7 个复选框范围内的所有特定星期几

Get all specific week days within the range of two date choosers and 7 checkboxes

我有 2 个 JDateChooser 控件和 7 个 JCheckBox 控件。 日期选择器将设置两个日期之间的范围,7 个复选框将筛选日期。

这 7 个复选框是: 周一、周二、周三、周四、周五、周六、周日

例如:

输出将是日期范围为 2021 年 10 月 1 日 - 2021 年 10 月 8 日的所有星期一和星期二。

我到处搜索但没有答案,我什至不知道从哪里开始。

显然是功课,所以我会很简短,足以为您指明正确的方向,同时让您实际自己完成作业。

很明显您会在一周中的几天使用复选框小部件,而不是 combo box

使用 LocalDate class 作为日期。使用 plusDays 方法从一个日期移动到另一个日期。使用 getDayOfWeek 测试每个对象以匹配 DayOfWeek 个对象。使用 EnumSet 及其 contains 方法进行检查。

使用 ArrayList< LocalDate > 收集您想记住的日期。

通过调用 List.copyOf 使完成的列表不可修改。

使用 DateTimeFormatter 报告收集到的 LocalDate 个对象的值。要自动本地化,请使用 .ofLocalizedDate.


在高级 Java 中,我们可能会做一些未经测试的代码。

List< LocalDate > dates = 
    LocalDate.of( 2021 , 10 , 1 )
    .datesUntil( LocalDate.of( 2021 , 10 , 8 ) )
    .filter( 
        localDate -> EnumSet.of( DayOfWeek.TUESDAY , DayOfWeek.THURSDAY ).contains( localDate.getDayOfWeek() )
    )
    .toList() 
;