我想知道如何计算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)
这里第一个假期到2月1日我需要计算2天假期1以及2天假期3和假期2这对我来说不是一个问题。
答案 0 :(得分: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;
}
正如您所看到的,最重要的部分是决定您对假期的定义并将其编入方法。这不是我们可以为您决定的。我们不知道您是否在美国,我们不知道您是否是政府机构,我们不知道您是否必须遵守州特定的假期等。