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

C# 基于5.0/5.5/6.0工作日规则的日历选择天数自动计算问题求解

5.5工作日规则天数计算bug修复

原有代码问题清单

  • 值类型操作无效:DateTime是值类型,startDate.AddDays(1);未将返回值赋值回原变量,该操作不会修改startDate的实际值。
  • 循环变量使用错误:遍历日期的迭代变量为date,但判断星期时错误使用了startDate,且循环体内额外对startDate执行自增,导致日期遍历逻辑完全混乱。
  • 5.5规则逻辑未正确实现:仅周日全天休息、周六算0.5个工作日的规则没有落地,原有代码未统计区间内的周六数量,循环结束后startDate已经超出选中日期区间,后续的0.5天扣减判断完全无意义。

修复后核心代码

private void SelectionChanged(SelectionChangedEventArgs obj)
{
    if(Settings.WorkingDay == "5.0")
    {
        // 原有正常逻辑保留
    }
    else if(Settings.WorkingDay == "5.5")
    {
        DateTime startDate = SelectedRange.StartDate.Date;
        DateTime endDate = SelectedRange.EndDate.Date;
        decimal workDays = 0;
        // 遍历区间内每一天
        for (DateTime date = startDate; date <= endDate; date = date.AddDays(1))
        {
            if (date.DayOfWeek == DayOfWeek.Sunday)
            {
                // 周日全天休息,不计入
                continue;
            }
            else if (date.DayOfWeek == DayOfWeek.Saturday)
            {
                // 周六算半天
                workDays += 0.5m;
            }
            else
            {
                // 周一到周五算全天
                workDays += 1;
            }
        }
        Quantity = workDays;
        Debug.WriteLine(Quantity.ToString());
    }
    else if(Settings.WorkingDay == "6.0")
    {
        // 原有正常逻辑保留
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:45:02