首頁 > 後端開發 > C++ > 如何在 C# 中計算兩個日期之間的工作日?

如何在 C# 中計算兩個日期之間的工作日?

DDD
發布: 2025-01-17 18:26:12
原創
577 人瀏覽過

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

C#中計算兩個日期之間的工作日

在C#中,計算兩個日期之間工作日的天數對於日程安排、專案管理和其他應用程式來說是一個非常有用的工具。有幾種方法可以完成這項任務,同時考慮週末和可能的銀行假日。

使用自訂方法:

一種方法是建立一個自訂方法,手動計算工作日的天數。以下是一個範例:

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;
}
登入後複製

銀行假日與自訂輸入:

此外,可以擴展該方法來考慮銀行假日的列表,即使這些假期發生在周中也能確保準確性。透過提供自訂日期列表,您可以處理特定場景。

其他方法:

C# 提供其他計算工作日的方法,例如使用第三方程式庫或內建的 System.Globalization.Calendar 類別。但是,上面描述的自訂方法提供了一個清晰直接的實現,滿足了規定的要求。

以上是如何在 C# 中計算兩個日期之間的工作日?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板