2012-04-18 90 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; 
} 

正如您所看到的,最重要的部分是决定您对假期的定义并将其编码为一种方法。这不是我们可以为你决定的事情。我们不知道你是否在美国,我们不知道你是否是政府机构,我们不知道你是否必须遵守国家特定的假期等。