2012-04-18 24 views
0

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

例:日付範囲の2012年1月1日2月1日に2012最初の休日としてここ

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) 

は私がholiday1のための2日間だけでなく、休日3のための2日間、休日2日のために計算する必要が1月2日までですそれは私が計算するのに問題ではありません。

+4

いつも緊急: ) –

答えて

4

まず、休日の一貫した定義が必要です。沢山あります。米国連邦政府の定義があり、ニューヨーク証券取引所の定義があり、一部の州でも独自の休日があります(たとえば、マサチューセッツ州のパトリオット・デー)。もちろん、私は米国が世界で唯一の国ではないという事実を無視してきました。それでは、あなたはこの定義を策定している、とあなたは法に成文化されてきたとしましょう:

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()); 
} 

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

ご覧のとおり、最も重要な部分は休日の定義を決定し、それを方法に体系化することです。それは私たちがあなたのために決めるものではありません。あなたが米国にいるかどうかわからない、政府機関であるかどうかわからない、州ごとの祝日などを観察する必要があるかどうかわからない。