首页 > 后端开发 > C++ > 如何在 C# 中计算两个日期之间的工作日?

如何在 C# 中计算两个日期之间的工作日?

DDD
发布: 2025-01-17 18:26:12
原创
502 人浏览过

How to Calculate Business Days Between Two Dates in C#?

C#中计算两个日期之间的工作日

在C#中,计算两个日期之间工作日的天数对于日程安排、项目管理和其他应用来说是一个非常有用的工具。有多种方法可以完成这项任务,同时考虑周末和可能的银行假日。

使用自定义方法:

一种方法是创建一个自定义方法,手动计算工作日的天数。以下是一个示例:

<code class="language-csharp">public static int BusinessDaysUntil(DateTime firstDay, DateTime lastDay, params DateTime[] bankHolidays)
{
    // 处理错误的结束日期
    if (firstDay > lastDay)
        throw new ArgumentException("结束日期错误: " + lastDay);

    TimeSpan span = lastDay - firstDay;
    int businessDays = span.Days + 1;
    int fullWeekCount = businessDays / 7;

    // 计算周末天数
    if (businessDays > fullWeekCount * 7)
    {
        int firstDayOfWeek = (int)firstDay.DayOfWeek;
        int lastDayOfWeek = (int)lastDay.DayOfWeek;
        if (lastDayOfWeek == 7) //周日
            businessDays -= 2;
        else if (lastDayOfWeek >= 6) //周六或周日
            businessDays -= 1;
        if (firstDayOfWeek == 7) //周日
            businessDays -= 1;
    }

    // 从完整周中减去周末天数
    businessDays -= fullWeekCount * 2;

    // 减去银行假日
    foreach (DateTime bankHoliday in bankHolidays)
    {
        DateTime bh = bankHoliday.Date;
        if (firstDay <= bh && bh <= lastDay)
            businessDays--;
    }

    return businessDays;
}</code>
登录后复制

银行假日和自定义输入:

此外,可以扩展该方法来考虑银行假日的列表,即使这些假日发生在周中也能确保准确性。通过提供自定义日期列表,您可以处理特定场景。

其他方法:

C# 提供其他计算工作日的方法,例如使用第三方库或内置的 System.Globalization.Calendar 类。但是,上面描述的自定义方法提供了一个清晰直接的实现,满足了规定的要求。

以上是如何在 C# 中计算两个日期之间的工作日?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板