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

JavaScript - Moment.js - isBetween() method check if time falls in a range

本文关键字:范围内 一个 是否 检查 js Moment isBetween 方法 JavaScript 时间      更新时间:2023-09-26

我正在尝试查看 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来检查它:

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

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

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/

没有足够的

数据进行计算。 00:12:00 表示在当前日期的开放时间前不到 8 小时 12 分钟。
正因为如此,23:12:00将超出范围。

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

  1. 开放时间。
  2. 工作时间(金额)。
  3. 现在是时候了,

为了能够确定 - "现在时间"是否落在时间间隔内。