首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >时刻js比较时间介于日期之间

时刻js比较时间介于日期之间
EN

Stack Overflow用户
提问于 2018-02-04 13:03:42
回答 1查看 2K关注 0票数 1

我有开始时间和结束时间,但开始时间大于结束时间

我想检查我输入的时间是否在开始时间和结束时间之间

代码语言:javascript
运行
复制
var startTime = moment('12:30 PM', 'h:mma');
var endTime = moment('1:00 AM', 'h:mma');
var inputtedTime = moment('12:00 AM', 'h:mma');

正如我们所看到的,inputtedTime在没有日期干预的情况下介于startTimeendTime之间。

代码语言:javascript
运行
复制
12:30 PM
01:30 PM
02:30 PM
......
10:30 PM
11:30 PM
12:00 AM  // <---------
12:30 AM
01:30 AM

但是当我开始使用moment js进行比较时,结果变成了false。实际上,我首先比较开始和结束时间(如果startTime isBefore endTime,我们必须在endTime中加上1天)

代码语言:javascript
运行
复制
var isTimeValid = true;
if(startTime.isBefore(endTime) == false) {
  endTime.add(1, "days");
}
isTimeValid = inputtedTime.isBetween(startTime, endTime);
console.log(isTimeValid);  // false

我们如何将结果输出为true?

这是我的小提琴-> http://jsfiddle.net/aSc4R/221/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-05 07:21:46

问题是,您的endTime有时是第二天,而您必须在此基础上再添加一天。但在这种情况下,您还必须检查您的inputTime是否在午夜和endTime之间,如果是,也要在inputTime中添加一天。

下面是一些代码,这些代码在午夜之前、午夜和午夜之后测试时间,并检查和调整了条件。所有三个测试时间现在都有效。

下面是一个有效的JSFiddle - http://jsfiddle.net/joewilson/174exdnu/

代码语言:javascript
运行
复制
var testTimesThatShouldBeValid = ['11:59 PM', '12:00 AM', '12:01 AM'];

testTimesThatShouldBeValid.forEach(function(testTime) {
  var isTimeValid = false;
  var startTime = moment('12:30 PM', 'h:mma');
  var midnight = moment('12:00 AM', 'h:mma');
  var endTime = moment('1:00 AM', 'h:mma');
  var inputtedTime = moment(testTime, 'h:mma');

  if (endTime.isBefore(startTime)) {
    if (inputtedTime.isBetween(midnight, endTime, null, '[]')) {
      inputtedTime.add(1, 'days');
      console.log("adjusted input time to next day");
    }

    endTime.add(1, 'days');
    console.log("adjusted end time to next day");
  }

  console.log(inputtedTime.format());
  console.log(startTime.format());
  console.log(endTime.format());

  isTimeValid = inputtedTime.isBetween(startTime, endTime);
  console.log(isTimeValid); // between start and end
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48604887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档