javascript 如何使用Moment.JS检查当前时间是否在2次之间

ddarikpa  于 2023-06-20  发布在  Java
关注(0)|答案(5)|浏览(156)

假设当前时间是09:34:00hh:mm:ss),我在两个变量中有两个其他时间:

var beforeTime = '08:34:00',
    afterTime = '10:34:00';

如何使用Moment.JS检查当前时间是否在beforeTimeafterTime之间?
我见过isBetween(),我试着像这样使用它:

moment().format('hh:mm:ss').isBetween('08:27:00', '10:27:00')

但这不起作用,因为一旦我将第一个(当前时间)时刻格式化为字符串,它就不再是一个时刻对象。我也试过使用:

moment('10:34:00', 'hh:mm:ss').isAfter(moment().format('hh:mm:ss')) && moment('08:34:00', 'hh:mm:ss').isBefore(moment().format('hh:mm:ss'))

但是我得到了false,因为当我再次格式化当前时间时,它不再是一个时刻。
我怎么才能让它工作?

inkz8wg9

inkz8wg91#

  • 可以将矩示例传递给isBetween()
  • 省略format()调用,你想要的是在第二次尝试的第一个时刻传递像int这样的解析格式。

就是这样

const format = 'hh:mm:ss';

// var time = moment() gives you current time. no format required.
const time = moment('09:34:00', format);
const beforeTime = moment('08:34:00', format);
const afterTime = moment('10:34:00', format);

if (time.isBetween(beforeTime, afterTime)) {
  console.log('is between');
} else {
  console.log('is not between');
}
// prints 'is between'
1l5u6lss

1l5u6lss2#

在本例中,我必须使用isBetweenisSame来覆盖isBetween条件中使用的beforeafter时间。

function getTimeCategory(time) {
  let timeCategory = '';
  const timeFormat = 'HH:mm:ss';

  if (
    time.isBetween(moment('00:00:00', timeFormat), moment('04:59:59', timeFormat)) ||
    time.isSame(moment('00:00:00', timeFormat)) ||
    time.isSame(moment('04:59:59', timeFormat))
  ) {
    timeCategory = 'DAWN';
  } else if (
    time.isBetween(moment('05:00:00', timeFormat), moment('11:59:59', timeFormat)) ||
    time.isSame(moment('05:00:00', timeFormat)) ||
    time.isSame(moment('11:59:59', timeFormat))
  ) {
    timeCategory = 'MORNING';
  } else if (
    time.isBetween(moment('12:00:00', timeFormat), moment('16:59:59', timeFormat)) ||
    time.isSame(moment('12:00:00', timeFormat)) ||
    time.isSame(moment('16:59:59', timeFormat))
  ) {
    timeCategory = 'NOON';
  } else if (
    time.isBetween(moment('17:00:00', timeFormat), moment('23:59:59', timeFormat)) ||
    time.isSame(moment('17:00:00', timeFormat)) ||
    time.isSame(moment('23:59:59', timeFormat))
  ) {
    timeCategory = 'NIGHT';
  }

  return timeCategory;
}
kiayqfof

kiayqfof3#

我使用了moment函数组合isSameOrAfter和isSameOrBefore,而不是isBetween。

if(moment(currentTime,'HH:mm:ss').isSameOrAfter(moment(shift_dayFrom,'HH:mm:ss')) && 
moment(currentTime,'HH:mm:ss').isSameOrAfter(moment(shift_dayTo,'HH:mm:ss')))
o2gm4chl

o2gm4chl4#

const beforeTime = moment(t, "HH:mm");
    const afterTime = moment(t2, "HH:mm");
    
    
             
                
   const time = moment(dueTime, "HH:mm");
    
   if(time.isSameOrAfter(beforeTime) && time.isSameOrBefore(afterTime))
                {
                  
                }
wpx232ag

wpx232ag5#

该页面上的示例是

moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true

在你的代码中没有调用format函数,所以我建议尝试

moment('09:34:00').isBetween('08:34:00', '10:34:00');

相关问题