我需要計算兩個日期之間的工作日數。工作日是星期一至星期五的任何一天,節假日除外。下面的代碼是這樣做的,但它使用了一個循環。有沒有人看到擺脫循環或至少優化它的方式?請幫助優化此循環
感謝 康斯坦丁
using System;
using System.Linq;
namespace consapp
{
static class Program
{
static void Main(string[] args)
{
var holidays = new DateTime[] { new DateTime(2010, 11, 23), new DateTime(2010, 11, 30) };
var date_start = new DateTime(2010, 12, 3);
var date_end = date_start.AddDays(-9.9);
var duration = (date_end - date_start).Duration();
for (var d = date_end; d < date_start; d = d.Date.AddDays(1))
{
if (holidays.Contains(d.Date) || d.DayOfWeek == DayOfWeek.Saturday || d.DayOfWeek == DayOfWeek.Sunday)
{
duration -= TimeSpan.FromDays(1) - d.TimeOfDay;
}
}
Console.WriteLine(duration);
}
}
}
在嘗試優化之前,您是否首次測試它是否正常工作?你是否分析了代碼以確保這是瓶頸? – 2010-12-06 19:32:11
你的程序通常運行什麼日期範圍?代碼現在表現如何以及您需要如何執行?雖然我確信有更好的方法來做這件事,但我會首先確認它的表現不佳。 – 2010-12-06 19:32:19
[計算兩個日期之間的工作天數?]可能重複(http://stackoverflow.com/questions/1617049/calculate-the-number-of-business-days-between-two-dates) – NotMe 2010-12-06 19:32:51