一尘不染

计算给定时间段内的正常工作日

algorithm

需要一些帮助。我需要计算给定日期范围内的正常工作日,例如,在我们的国家/地区,星期一至星期五有5个正常工作日,那么在代码中,我需要在计算中使用星期六和星期天。

我在C#中需要这样的算法:

    int GetRegularWorkingDays(DateTime startDate, DateTime endDate)
    {

       int nonWorkingDays = ((endDate - startDate) % 7) * 2;

       return (endDate - startDate) - nonWorkingDays;
    }

我知道我的草案还很遥远:(。预先感谢。=)

PS:各位,请在下面对最佳/最快/最有效的答案进行投票。 谢谢=)


阅读 450

收藏
2020-07-28

共1个答案

一尘不染

在Code
Project上
查看此示例,该示例使用了一种非常高效的方式,不涉及任何循环;)

它使用以下算法:

  1. 计算时间跨度(以周为单位)。叫它W。
  2. 从周数中减去第一周。W = W-1
  3. 将周数乘以每周工作日数。叫D
  4. 找出指定时间段内的假期。叫它H
  5. 计算第一周的天数。称之为SD。
  6. 计算最后一周的天数。ED,叫它
  7. 一整天总结一下。BD = D + SD + ED-H。
2020-07-28