0

C# で日付範囲間の休日の数を計算する方法を知りたいです。

例: 日付範囲 2012 年 1 月 1 日から 2012 年 2 月 1 日

 conditions:
    holiday1=>From Date (30th Dec 2011 to 2nd jan 2012)
    holiday2 =>From Date(16th jan 2012 to 18 th jan 2012)
    holiday3=>From Date(30the jan 2012 to 2nd Feb 2012)

ここでは、最初の休日は 1 月 2 日までなので、休日 1 については 2 日、休日 3 については 2 日、休日 2 日については 2 日を計算する必要がありますが、これは計算するのに問題はありません。

4

1 に答える 1

4

まず、休日の単一の一貫した定義が必要です。沢山あります。米国連邦政府の定義があり、NYSEの定義があり、一部の州でさえ独自の休日があります(たとえば、マサチューセッツ州の愛国者の日)。そしてもちろん、私は米国が世界で唯一の国ではないという事実を無視しました。したがって、この定義を定式化し、メソッドに体系化したとしましょう。

bool IsHoliday(this DateTime date) { // }

今、あなたは言うことができます:

int CountHolidaysBetween(DateTime start, DateTime end) {
    int days = end.Day.Substract(start.Day).Days;
    return Enumerable.Range(0, days + 1)
                     .Select(day => start.Day.AddDays(day))
                     .Count(d => d.IsHoliday());
}

または、それがあまりにも派手だと思う場合:

int CountHolidaysBetween(DateTime start, DateTime end) {
    DateTime current = start.Day;
    int count = 0;
    while(current <= end.Day) {
        if(current.IsHoliday()) { count++; }
        current = current.AddDays(1);
    }
    return count;
}

ご覧のとおり、最も重要な部分は、休日の定義を決定し、それをメソッドに体系化することです。それは私たちがあなたのために決めることができるものではありません。あなたが米国にいるかどうか、政府機関であるかどうか、州固有の休日を守る必要があるかどうかなどはわかりません。

于 2012-04-18T02:47:07.113 に答える