今天在工作中遇到个问题,添加工作日后并没有排除掉周末的两天,想了一上午没想出什么好的思路,后来百度搜了搜,小改了一下。
////// 添加工作日 /// /// 开始时间 /// 需要添加的工作日 ///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; } /// /// 计算时间段内节假日的天数 /// /// 开始时间 /// 结束时间 ///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(); }
输出的结果为:
暂时还没发现什么问题,如果发现错误望指正!