爲週六,週日,這很容易。只需檢查您的日期的DateTime.DayOfWeek
財產。
如果您有將開始日期start
,將結束對日end
的操作,你可以看到日期是星期六或星期日像這樣的內容:你可以知道
List<DateTime> satsAndSundays;
for (DateTime temp = start; temp <= end; temp.AddDays(1))
{
if (temp.DayOfWeek == DayOfWeek.Sunday ||
temp.DayOfWeek == DayOfWeek.Saturday)
{
satsAndSundays.add(temp);
}
}
而且因爲多少天有是start
和end
之間做一樣的東西:
TimeSpan span = end - start;
int totalDays = (int)span.TotalDays;
// TotalDays is actually a double, I'm just discarding the non integer part.
您可能FID出你有多少個工作日內通過做totalDays - satsAndSundays.Count
有有。
編輯:我剛剛看了一遍這個問題。如果你想有一個任務開始在給定日期,並採取x
工作日內,你可以做這樣的:
DateTime end = start;
for (int i = x; i >= 0;) // the third parameter of the for is empty on purpose
{
end = end.AddDays(1);
if (end.DayOfWeek != DayOfWeek.Saturday &&
end.DayOfWeek != DayOfWeek.Sunday)
{
i--;
}
}
Afther循環,end
將x
個工作日之後start
(只要是沒有假期之間)。
假期,不過,對於在該框架沒有alghoritm。您需要從某個源(文件,數據庫,Web服務等)獲取它們。或者你可以編寫自己的程序來解決它們 - 大多數不是固定日期的假期在發生時都遵循公式。不過,請注意,假期可能因文化和地區而異。例如,如果您的申請要在全國範圍內使用,那麼實施全市假期可能是相當費力的。根據您的需求,甚至可以讓用戶輸入哪些日子是假期,或者讓您的應用可以訪問和使用您自己的數據庫。