【问题标题】:Converting and Comparing times represented in strings转换和比较以字符串表示的时间
【发布时间】:2015-05-27 13:38:21
【问题描述】:

时间采用 24 小时制 HH:mm

我想在以下条件下比较两个时间范围:

a) T1 > T2 
b) T2 not in-between time range of T1 
c) The T1 & T2 do not overlap

是否有任何库,或者我应该只满足所有可能的组合并创建自己的脚本?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您的选择是:

    1. 一个库,比如momentJS

    2. Convert 将字符串转换为标准 javascript 日期时间并比较这些对象而不是字符串。你需要一个假约会。

    3. 自己动手,手动覆盖所有可能性。

    如果您打算一遍又一遍地在两个数组之间进行比较(即您的 JSON 没有采用不同的格式,并且您的代码需要更多的模块化),我认为您应该自己动手。为您的三个条件编写一个带有子函数的validation 函数,并返回func1 && func1 && func3

    此外,所有这些都有 3 级,特别是如果您必须学习一个新库,我会朝着那个方向学习。对于有限的 h:m 比较,它有可能成为最快和最高性能的,尤其是当您使用 JavaScript 变得更好时。

    【讨论】:

      【解决方案2】:

      很少。查看these dateTime 库

      【讨论】:

        【解决方案3】:

        如果可以的话,我总是更喜欢手动方法,那么您可以完全控制加载到页面中的内容。

        我建议比较getTime()的,像这样:

        var Now = new Date(),
            T1 = {},
            T2 = {};
        T1.Start = new Date(Now.getFullYear(), Now.getMonth(), Now.getDate(), 8, 30); // 8:30am
        T1.End = new Date(Now.getFullYear(), Now.getMonth(), Now.getDate(), 12, 30); // 12:30pm
        T2.Start = new Date(Now.getFullYear(), Now.getMonth(), Now.getDate(), 13, 0); // 1:00pm
        T2.End = new Date(Now.getFullYear(), Now.getMonth(), Now.getDate(), 17, 30); // 5:30pm
        T1.Length = T1.End.getTime() - T1.Start.getTime()
        T2.Length = T2.End.getTime() - T2.Start.getTime()
        
        if (T1.Length > T2.Length) { // Longer than
        
        } else if (T2.Start > T1.Start && T2.End < T1.End) { // Inbetween
        
        } else if (T2.Start < T1.End || T2.End > T1.Start) { // Overlapping
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-28
          • 1970-01-01
          • 1970-01-01
          • 2013-12-16
          • 2019-09-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多