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

首先,您需要对假期有一个统一的、一致的定义。有许多。有美国联邦政府的定义,有纽约证券交易所的定义,甚至有些州也有自己的假期(例如,马萨诸塞州的爱国者日)。当然,我忽略了美国不是世界上唯一的国家这一事实。所以,假设你已经制定了这个定义,并且你已经编写了一个方法:

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 回答