>백엔드 개발 >C++ >C#에서 두 날짜 사이의 영업일을 계산하는 방법은 무엇입니까?

C#에서 두 날짜 사이의 영업일을 계산하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-17 18:26:12500검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.