首先,你需要一個單一的,一致的假期定義。有許多。美國聯邦政府的定義是紐約證券交易所的定義,甚至有些州有自己的假期(例如馬薩諸塞州的愛國者日)。當然,我忽略了美國不是世界上唯一的國家這一事實。所以,讓我們說,你已經制定了這個定義,你已經編入一個方法:
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-18 02:42:05