2012-04-18 94 views
0

我想知道如何計算C#中日期範圍內的假期數。計算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日,我需要計算holiday12天以及2個天假期3和節假日第二這對我來說不算什麼問題。

+4

它總是很緊急: ) – 2012-04-18 02:42:05

回答

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

,或者,如果你認爲這是太花哨:

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

正如您所看到的,最重要的部分是決定您對假期的定義並將其編碼爲一種方法。這不是我們可以爲你決定的事情。我們不知道你是否在美國,我們不知道你是否是政府機構,我們不知道你是否必須遵守國家特定的假期等。