添加工作日,排除時間段內節假日
阿新 • • 發佈:2017-12-20
ons ddd sunday 結束時間 || 輸出 oid console alt
今天在工作中遇到個問題,添加工作日後並沒有排除掉周末的兩天,想了一上午沒想出什麽好的思路,後來百度搜了搜,小改了一下。
/// <summary> /// 添加工作日 /// </summary> /// <param name="startTime">開始時間</param> /// <param name="addDays">需要添加的工作日</param> /// <returns></returns> public static DateTime AddWorkDays(DateTime startTime, int addDays) { DateTime endTime = startTime.AddDays(addDays); int days = CalculateWeekendDays(startTime, endTime); while (days > 0) { startTime = endTime; endTime = endTime.AddDays(days); days = CalculateWeekendDays(startTime, endTime); } return endTime; } /// <summary> /// 計算時間段內節假日的天數 /// </summary> /// <param name="startTime">開始時間</param> /// <param name="endTime">結束時間</param> /// <returns></returns> public static int CalculateWeekendDays(DateTime startTime, DateTime endTime) { int count = 0; //遍歷節假日內的日期,當日期等於周六或周日時,count++ for (DateTime dateItem = startTime.AddDays(1); dateItem <= endTime; dateItem = dateItem.AddDays(1)) { if (dateItem.DayOfWeek == DayOfWeek.Saturday || dateItem.DayOfWeek == DayOfWeek.Sunday) { count++; } } return count; } static void Main(string[] args) { DateTime firstDate = DateTime.Now; int num = 10; DateTime lastTime = AddWorkDays(firstDate, num); Console.WriteLine("{0} 加上{1}個工作日後得到 {2} ",firstDate.ToString(),num,lastTime.ToString()); Console.ReadKey(); }
輸出的結果為:
暫時還沒發現什麽問題,如果發現錯誤望指正!
添加工作日,排除時間段內節假日