首页 > 解决方案 > Moment isBetween(hours) 给出了意想不到的结果

问题描述

我正在尝试获取给定日期是否介于日期(下午和上午)之间。

示例输入:

moment('22:00', 'HH:mm').isBetween(moment('17:00', 'HH:mm'),moment('01:00', 'HH:mm'));

我期望输出是真的,但它是假的。如果我只使用下午时间或只使用上午时间,它工作得很好。

也尝试过这种格式,但结果是一样的

moment('17:00 PM', 'HH:mm A')

标签: javascriptdatemomentjs

解决方案


这是一个快速而肮脏的实现,但如果您接受 HH:mm 中总会有时间传递,它就可以工作:

let time1 = '17:00';
let time2 = '1:00';

function isBetweenTime(timeToEvaluate, startTime, endTime){
    let momentTimeToEvaluate = moment(timeToEvaluate, "HH:mm");
  let momentStartTime = moment(startTime, "HH:mm");
  let momentEndTime = moment(endTime, "HH:mm");
  
  if(startTime > endTime){
    momentEndTime.add(1, 'days');
  }
  
  return momentTimeToEvaluate.isBetween(momentStartTime, momentEndTime);
}

console.log(isBetweenTime('22:00', time1, time2));
console.log(isBetweenTime('22:00', time2, time1));


推荐阅读