JavaScript - Moment.js - isBetween()方法检查时间是否在一个范围内

时间:2016-07-14 23:50:53

标签: javascript momentjs

我正在尝试查看 timeNow 是否介于开启关闭的时间范围内:

var timeFormat2 = "HH:mm:ss";
var timeNow = "23:12:00"; //(11:12:00 pm)
var opening = "08:00:00"; //(08:00:00 am) morning time
var closing = "00:12:00"; //midnight time (i.e 12:12:00 am)

var isAvailable = moment(timeNow, timeFormat2).isBetween(moment(opening, timeFormat2), moment(closing, timeFormat2));

console.log("will show false >>>> ", isAvailable); //it shows 'false'

var closing1 = "23:45:00";
var isAvailable1 = moment("23:12:00", timeFormat2).isBetween(moment(opening, timeFormat2), moment(closing1, timeFormat2));

console.log("Should show true >>>> ", isAvailable1);

这是一个查看它的JSfiddle:

  

the documentation

2 个答案:

答案 0 :(得分:1)

你需要引入“第二天”的概念。在这里,我将日期设置为该月的第一天。如果收盘时间在开盘时间之前,那么我将收盘时间移至该月的第二天。

function isAvailable(opening, closing, now){
    var openingTime = moment(opening, timeFormat2).date(1);
  var closingTime = moment(closing, timeFormat2).date(1);
  var nowTime = moment(now, timeFormat2).date(1);
  if(closingTime.isBefore(openingTime)){
    closingTime.date(2);
  }
  return nowTime.isBetween(openingTime, closingTime);
}

https://jsfiddle.net/1wuf0rzg/14/

答案 1 :(得分:1)

没有足够的数据来计算。 00:12:00表示在当前日期开放时间前不到8小时的12分钟 因此,23:12:00将超出范围。

这将有助于使用不同类型的数据:

  1. 开放时间。
  2. 工作时间(金额)。
  3. 现在时间,
  4. 以便能够确定 - “现在的时间”是否轻松落入时间间隔内。