【问题标题】:Javascript calculate time between two DateTimes. Including only working hoursJavascript 计算两个日期时间之间的时间。仅包括工作时间
【发布时间】:2018-08-07 17:54:35
【问题描述】:

我做了什么。 使用 Moment.js 以分钟为单位计算差异。这不包括周末和非工作时间。

下载了一个 Moment.js 插件(Moment-business),它具有我正在寻找的确切功能,但需要大量的计算时间。

这是意料之中的,因为日期可能会在两天到两百天之间有所不同。

我的“解决方案”。 以原始分钟数从开始日期迭代到结束日期。而不是计算我界限之外的分钟数。可以想象,这是非常耗费资源的。 (150 个对象,都需要计算,每 30 秒,在很长一段时间内)。

我对更好解决方案的想法。 一旦我的计数器在我的结束工作时间后达到一分钟,在原始分钟中添加 16 小时,这样它就会跳过 16 小时的循环。工作日也一样。

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

我的问题是。 有没有办法有效地计算 javascript 中两个 DateTimes 之间的时间? (我也在使用 Laravel 来获得它的价值。)

感谢您的宝贵时间。

【问题讨论】:

  • 这个问题对我们来说似乎太模糊了,没有价值。如果需要帮助,您应该发布代码。
  • 你是在刀片还是纯javascript上处理?

标签: javascript laravel momentjs


【解决方案1】:

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

计算差值(a, b)

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

不需要插件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-05
    • 2012-02-13
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多