在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是星期天或星期六,则减去月份中的天数,或者与假期数组中的值匹配。