Javascript 时刻是介于2次之间的时间,与日期无关

Javascript 时刻是介于2次之间的时间,与日期无关,javascript,date,momentjs,Javascript,Date,Momentjs,我想弄清楚如何做一个简单的IF语句,弄清楚提供的日期是否在08:00到20:15之间,而不管日期是什么 var obj = { "Date/Time": "2018-09-30 23:51:09" }; const date = moment(obj['Date/Time']).format("HH:mm:ss"); const start_time = "08:00:00"; const end_time = "20:15:00"; if (moment(date).isBetween(s

我想弄清楚如何做一个简单的IF语句,弄清楚提供的日期是否在08:00到20:15之间,而不管日期是什么

var obj = { "Date/Time": "2018-09-30 23:51:09" };

const date = moment(obj['Date/Time']).format("HH:mm:ss");
const start_time = "08:00:00";
const end_time = "20:15:00";

if (moment(date).isBetween(start_time, end_time)) {
  console.log("yes")
}
但上面的代码失败,出现以下错误:

有什么建议吗?

假设所有三个字符串都是
HH:mm:ss
格式,您只需将它们作为字符串进行比较:

var date       = "23:51:09";
var start_time = "08:00:00";
var end_time   = "20:15:00"; 
if (start_time <= date && date <= end_time) {
    console.log("yes");
}
var date=“23:51:09”;
var start_time=“08:00:00”;
var end_time=“20:15:00”;

if(start_time首先,您需要使用
if
表达式中的
矩(string,string)
构造函数正确构造矩对象,因为日期字符串不是ISO格式

其次,您还可以将
start\u time
end\u time
构造为矩对象,以便直接比较这三个对象的时间值。请参见下面的演示:

var obj={
“日期/时间”:“2018-09-30 09:51:09”
}
const date=时刻(obj['date/Time'])。格式(“HH:mm:ss”);
常数开始时间=时刻(“08:00:00”,“HH:mm:ss”);
const end_time=时刻(“20:15:00”,“HH:mm:ss”);
if(时刻(日期,'HH:mm:ss').isBetween(开始时间,结束时间)){
console.log(“是”)
}

看起来你需要一个合适的开始和结束时间

const start_time = moment(obj['Date/Time']).hour(8).startOf('hour');
const end_time = moment(obj['Date/Time']).hour(20) minute(15).startOf('minute');

if (moment(date).isBetween(start_time, end_time)) {
    console.log('WIN!');
}

如果您仍然收到错误,则日期的格式不是它要查找的时刻,您需要告诉它第二个参数的格式,表示
时刻(日期,格式)
为什么不尝试类似的方法

    const date = new Date('2018-09-30 23:51:09');
    const start_time = new Date('2018-09-30 8:00:00');
    const end_time = new Date('2018-09-30 20:15:00');     

    if (start_time<date && date<end_time) {
      console.log('yes');
    }
const date=新日期('2018-09-30 23:51:09');
施工开始时间=新日期('2018-09-30 8:00:00');
施工结束时间=新日期('2018-09-30 20:15:00');

如果(开始时间你能检查一下吗?开始时间和结束时间是否可能在午夜的两侧,例如20:00和04:00?午夜部分的可能副本正是我想要的。非常感谢@SalmanA!因为时间戳“2018-09-30 23:51:09”不是ECMA-262支持的格式,并且在某些实现中返回无效日期注:-(
const start_time = moment(obj['Date/Time']).hour(8).startOf('hour');
const end_time = moment(obj['Date/Time']).hour(20) minute(15).startOf('minute');

if (moment(date).isBetween(start_time, end_time)) {
    console.log('WIN!');
}
    const date = new Date('2018-09-30 23:51:09');
    const start_time = new Date('2018-09-30 8:00:00');
    const end_time = new Date('2018-09-30 20:15:00');     

    if (start_time<date && date<end_time) {
      console.log('yes');
    }