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

Flutter中计算排除周末的日期天数问题求助

问题修正方案

你的代码存在两个核心问题:

1. 初始计数器错误

你将计数器a初始化为1,默认把起始日期算入统计,但没有判断起始日期是否为周末,导致起始是周末时会多算一天。

2. 循环逻辑遗漏起始日期判断

原循环先对日期加1再判断,导致起始日期本身没有被检查是否为工作日,同时结束日期的处理逻辑也有偏差。

另外需要确认:代码中的&&是HTML转义后的字符,实际代码中必须使用&&(逻辑与运算符),如果误用&(位运算符)会导致逻辑判断完全错误。

修正后的代码

String method(String start, String end) {
  int count = 0;
  DateTime currentDate = DateTime.parse(start);
  DateTime endDate = DateTime.parse(end);

  // 遍历包含起始和结束日期的所有天数
  while (!currentDate.isAfter(endDate)) {
    // 判断当前日期是否为工作日(非周六、周日)
    if (currentDate.weekday != DateTime.saturday &&
        currentDate.weekday != DateTime.sunday) {
      count++;
    }
    currentDate = currentDate.add(const Duration(days: 1));
  }
  print('COUNT: $start :: $end $count');
  return count.toString();
}

测试验证

  • 测试用例1:起止日期为2022年9月24日(周六)和2022年9月25日(周日),返回0,符合预期。
  • 测试用例2:起止日期为2022年9月25日(周日)和2022年9月26日(周一),返回1,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:05:26