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

使用WorkingDayHelper计算工作日时节假日过滤失效问题排查

你遇到的现象是因为两个使用层面的问题导致的:

  1. 节假日匹配失败:你定义的节假日列表中的DateTime实例时间部分默认是00:00:00,而传入GetNext方法的DateTime.Now带有当前实时时间,二者直接做相等判断时无法匹配,所以代码没有识别到9月15日属于节假日,误认为当天是普通工作日,因此直接返回了当天日期。
  2. 方法调用不符合需求:你调用的无参GetNext方法默认仅返回下1个工作日,要实现加2个工作日的需求,需要调用带偏移量参数的重载。

解决方法

  • 传入计算的日期时先调用Date属性剔除时间部分,保证和节假日列表的日期格式匹配,同时指定偏移量参数:
var listHolidays = new List<DateTime>
{
    new DateTime(2021,09,15),
    new DateTime(2021,09,16),
};
var helper = new WorkingDayHelper(listHolidays);
// 仅取日期部分,剔除时间干扰
var inputDate = DateTime.Now.Date;
// 传入偏移量2,指定增加2个工作日
var newDate = helper.GetNext(inputDate, 2);
  • 如果修改后依然存在匹配问题,可检查WorkingDayHelper类中IsHoliday方法的实现,将日期比较逻辑改为仅匹配日期部分即可:
public bool IsHoliday(DateTime date)
{
    // 只比较日期部分,忽略时间
    return _holidays.Any(h => h.Date == date.Date);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:57:01