【发布时间】:2008-09-26 19:15:35
【问题描述】:
给定两个日期时间。计算它们之间的工作时间的最佳方法是什么。考虑到工作时间是周一 8 - 5.30,周二至周五 8.30 - 5.30,而且任何一天都可能是公共假期。
这是我的努力,看起来效率低得可怕,但就迭代次数而言,IsWorkingDay 方法会访问数据库以查看该日期时间是否为公共假期。
谁能提出任何优化或替代方案。
public decimal ElapsedWorkingHours(DateTime start, DateTime finish)
{
decimal counter = 0;
while (start.CompareTo(finish) <= 0)
{
if (IsWorkingDay(start) && IsOfficeHours(start))
{
start = start.AddMinutes(1);
counter++;
}
else
{
start = start.AddMinutes(1);
}
}
decimal hours;
if (counter != 0)
{
hours = counter/60;
}
return hours;
}
【问题讨论】:
-
您有多少个公共假期? ;P