Javascript计算两个DateTime之间的时间。仅包括工作时间

时间:2018-08-07 17:54:36

标签: javascript laravel momentjs

我做了什么。 使用Moment.js来计算分钟差异。这不排除周末和非工作时间。

下载了Moment.js插件(Moment-business),该插件具有我想要的确切功能,但需要大量的计算时间。

这是可以预期的,因为日期可能在两天到两百天之间有所不同。

我的“解决方案”。 从开始日期到结束日期(以原始分钟为单位)进行迭代。而没有计算超出我的界限的分钟数。您可以想象,这是非常耗费资源的。 (150个对象,所有这些都需要在很长一段时间内每30秒进行一次计算)。

我的想法是寻求更好的解决方案。 一旦我的计数器在结束工作时间一分钟后到达,请在原始分钟内增加16小时,这样就可以跳过16小时的循环时间。与工作日相同。

我觉得这也会变慢,特别是考虑到我一直在C#中使用原始方法并且速度非常快。而且它仍然具有O(1)表示法。

我的问题是。 有没有一种方法可以有效地计算JavaScript中两个DateTime之间的时间? (我还用Laravel来衡量它的价值。)

谢谢您的时间。

1 个答案:

答案 0 :(得分:0)

不要循环显示从第一个日期到第二个日期的分钟...日期之间的差异对于计算差异所花费的时间应该是一个非因数。只是做数学。这是一些伪代码:

calcDifference(a,b)

  1. 计算日期a当天的剩余营业时间
  2. 计算日期b-日期a的周数,乘以每周的工作日数和每天的工作时间
  3. 计算日期b当天已经过去的营业时间
  4. 将(1),(2)和(3)加起来

不需要插件。