【发布时间】:2011-06-16 15:47:19
【问题描述】:
我需要计算给定结构的总工作天数,该结构表示一周中的哪几天工作以及从开始到现在。
我目前的算法是这样的:
protected int TotalWorkDays(DateTime From, DateTime dtTo,WorkedDays days)
{
int Days = 0;
DayOfWeek DOW;
for (DateTime curDate = From; curDate.Date <= dtTo.Date; curDate = curDate.AddDays(1))
{
DOW = curDate.DayOfWeek;
if ((DOW == DayOfWeek.Sunday & days.Sunday) |
(DOW == DayOfWeek.Monday & days.Monday) |
(DOW == DayOfWeek.Tuesday & days.Tuesday) |
(DOW == DayOfWeek.Wednesday & days.Wednesday) |
(DOW == DayOfWeek.Thursday & days.Thursday) |
(DOW == DayOfWeek.Friday & days.Friday) |
(DOW == DayOfWeek.Saturday & days.Saturday)
)
{
Days += 1;
}
}
return Days;
}
我几乎肯定这可以在没有循环的情况下完成,但我似乎无法弄清楚。有人可以帮我找到更有效的算法吗?
【问题讨论】:
-
@Jeff - 不是重复的。这里的工作日是可配置的。