一尘不染

.NET日期比较:计算自日期以来的工作日数?

algorithm

自日期以来计算工作日数的最简单方法是什么?首选VB.NET,但C#可以。

所谓“工作日”,是指除星期六和星期日以外的所有日子。如果该算法还可以考虑不应该算作工作日的特定“排除”日期列表,那将是很重要的。

在此先感谢您的贡献。


阅读 324

收藏
2020-07-28

共1个答案

一尘不染

这会做您想要的。转换为VB.NET应该很容易,但是对于我来说已经太久了。

DateTime start = DateTime.Now;
DateTime end = start.AddDays(9);
IEnumerable<DateTime> holidays = new DateTime[0];

// basic data
int days = (int)(end - start).TotalDays;
int weeks = days / 7;

// check for a weekend in a partial week from start.
if (7- (days % 7) <= (int)start.DayOfWeek)
    days--;
if (7- (days % 7) <= (int)start.DayOfWeek)
    days--;

// lose the weekends
days -= weeks * 2;

foreach (DateTime dt in holidays)
{
    if (dt > start && dt < end)
        days--;
}
2020-07-28