【问题标题】:Check time conflict on JavaScript检查 JavaScript 上的时间冲突
【发布时间】:2016-05-02 18:38:01
【问题描述】:

我有一个注册项目,用户在列表中获得主题。现在如何检查时间是否与他人冲突?变量是字符串,我的老师只想要这种格式。

var time1 = '10:00:AM-12:00:PM';

var time2 = '10:30:AM-11:00:AM';

如何检查 time2 是否与 time1 冲突?是否有可能有用的 jquery 库?

【问题讨论】:

  • 你的意思是不等于?还是格式冲突?需要更多信息
  • 你有10:00AM 而不是10:00:AM for time1,这是不是错字?
  • @BG101 是的,它是字符串。
  • if(time1 != time2){ ... } 无论它们采用何种格式,如果它们不相等,它们就不相等

标签: javascript jquery html time time-format


【解决方案1】:

我要做的是创建一个函数,将这些字符串拆分成一个多维数组:

var timeSegments = function(time) {
   var timeArray = time.split("-");
   for(i = 0; i < timeArray.length; i++) {
       timeArray[i] = timeArray[i].split(":");
   }
   return timeArray;
}

然后,我会为两个时间段运行该函数:

time1 = timeSegments('10:00:AM-12:00:PM');
time2 = timeSegments('10:30:AM-11:00:AM');

time1 的输出应该是:

[
    [
        0: "10"
        1: "00"
        2: "AM"
    ], [
        0: "12"
        1: "00"
        2: "PM"
    ]
]

time2 的输出应该是:

[
    [
        0: "10"
        1: "30"
        2: "AM"
    ], [
        0: "11"
        1: "00"
        2: "AM"
    ]
]

您现在可以通过比较这些数组中的值来比较两个时间段。

【讨论】:

    【解决方案2】:

    转换both start times and end times to dates,然后检查time2的结束时间是否晚于time1的开始时间,反之亦然。如果两个结束时间都晚于另一个的开始时间,则您的时间范围有冲突。通过moment.js 将字符串转换为日期更容易。

    【讨论】:

      【解决方案3】:

      将您的时间转换为数字并进行比较:

      var time1 = '10:00:AM-12:00:PM';
      var time2 = '10:30:AM-11:00:AM';
      var convertedTime1 = getConvertedStartEndTime(time1)
      var convertedTime2 = getConvertedStartEndTime(time2)
      
      
      function getConvertedStartEndTime(time){
          time = time.split('-').map(function(item){ return item.replace('PM', '10000').replace('AM', 1)});
          time = time.map(function(item){ return item.split(':')});
          var time2StartConverted = time[0].reduce(function (a, b) {
          return parseInt(a) + parseInt(b);
          });
          var time2EndConverted = time[1].reduce(function (a, b) {
              return parseInt(a) + parseInt(b);
          });
          return [time2StartConverted, time2EndConverted]
      }
      

      知道您可以在日期之间进行比较

      【讨论】:

      • time2[0].reduce 不是函数
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-03
      • 2018-01-07
      • 2021-06-29
      • 2014-10-28
      • 1970-01-01
      • 2018-03-28
      相关资源
      最近更新 更多