You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JDateChooser与JCheckBox筛选指定区间内的对应星期日期

功能实现方案

核心逻辑

通过3个核心步骤完成筛选:

  • 读取两个JDateChooser的起止日期、7个JCheckBox的勾选状态作为输入
  • 遍历起止日期区间内的所有日期
  • 匹配每个日期对应的星期是否为已勾选的选项,匹配成功则加入结果集

具体实现代码(Java 8+,推荐使用java.time时间API避免旧API的时区、线程安全问题)

1. 读取勾选的星期筛选条件

import java.time.DayOfWeek;
import java.util.HashSet;
import java.util.Set;

// 这里的cbMonday到cbSunday对应你页面上的7个JCheckBox控件
Set<DayOfWeek> allowedWeekDays = new HashSet<>();
if (cbMonday.isSelected()) allowedWeekDays.add(DayOfWeek.MONDAY);
if (cbTuesday.isSelected()) allowedWeekDays.add(DayOfWeek.TUESDAY);
if (cbWednesday.isSelected()) allowedWeekDays.add(DayOfWeek.WEDNESDAY);
if (cbThursday.isSelected()) allowedWeekDays.add(DayOfWeek.THURSDAY);
if (cbFriday.isSelected()) allowedWeekDays.add(DayOfWeek.FRIDAY);
if (cbSaturday.isSelected()) allowedWeekDays.add(DayOfWeek.SATURDAY);
if (cbSunday.isSelected()) allowedWeekDays.add(DayOfWeek.SUNDAY);

2. 读取起止日期并转换格式

import java.time.LocalDate;
import com.toedter.calendar.JDateChooser;

// 非空判断,避免空指针
if (chooserStart.getDate() == null || chooserEnd.getDate() == null) {
    // 自行补充提示用户选择起止日期的逻辑
    return;
}
// JDateChooser返回的是java.util.Date,转换为java.time.LocalDate
LocalDate startDate = new java.sql.Date(chooserStart.getDate().getTime()).toLocalDate();
LocalDate endDate = new java.sql.Date(chooserEnd.getDate().getTime()).toLocalDate();

// 校验日期区间合法性
if (endDate.isBefore(startDate)) {
    // 自行补充提示结束日期不能早于开始日期的逻辑
    return;
}
// 校验是否勾选了至少一个星期选项
if (allowedWeekDays.isEmpty()) {
    // 自行补充提示至少选择一个星期的逻辑
    return;
}

3. 遍历日期区间筛选匹配结果

import java.util.ArrayList;
import java.util.List;

List<LocalDate> matchedDates = new ArrayList<>();
LocalDate currentDate = startDate;
// 遍历区间内所有日期
while (!currentDate.isAfter(endDate)) {
    // 匹配星期是否在选中集合内
    if (allowedWeekDays.contains(currentDate.getDayOfWeek())) {
        matchedDates.add(currentDate);
    }
    currentDate = currentDate.plusDays(1);
}

4. 结果使用说明

遍历matchedDates即可得到所有符合要求的日期,按你需要的格式输出即可。你给出的示例场景运行后得到的匹配结果为:

  • 2021-10-04(周一)
  • 2021-10-05(周二)

内容的提问来源于stack exchange,提问作者Thevinu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:45:04