在Excel中是否有.NET方法等价于NETWORKDAYS?
我想在Visual Basic中做一些datemath。 Excel中的NETWORKDAYS
函数正是我所需要的。 在.NET中是否有等价或类似的方法?
看看这个:
private int CountWorkDays( DateTime startDate, DateTime endDate, List<DateTime> excludedDates ) { int dayCount = 0; int inc = 1; bool endDateIsInPast = startDate > endDate; DateTime tmpDate = startDate; DateTime finiDate = endDate; if( endDateIsInPast ) { // Swap dates around tmpDate = endDate; finiDate = startDate; // Set increment value to -1, so it DayCount decrements rather // than increments inc = -1; } while( tmpDate <= finiDate ) { if( !excludedDates.Contains( tmpDate ) ) { dayCount += inc; } // Move onto next day tmpDate = tmpDate.AddDays( 1 ); } return dayCount; }
在这里你将有两篇文章作为一个很好的起点:
工作日的优化计算algorithm
和
业务date计算
据我所知,并不是很难拿出一个。
假设星期六和星期日已closures,则计算月份中的天数,迭代date,如果当前date是星期天或星期六,则减去月份中的天数,或者与假期数组中的值匹配。