如何使用Moment.JS判断当前时间是否在2倍之间

新手上路,请多包涵

假设当前时间是 09:34:00 ( hh: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 ,因为当我再次格式化当前时间时,它不再是一个时刻。

我如何让它工作?

原文由 ᔕᖺᘎᕊ 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 437
2 个回答
  • 您可以将力矩实例传递给 isBetween()
  • 省略 format() 调用,您想要的是在第二次尝试的第一时刻传递像 int 这样的解析格式。

就这样:

 var format = 'hh:mm:ss'

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

if (time.isBetween(beforeTime, afterTime)) {

  console.log('is between')

} else {

  console.log('is not between')

}

// prints 'is between'

原文由 Linus Borg 发布,翻译遵循 CC BY-SA 3.0 许可协议

I had to use isBetween and isSame in my case to cover the before and after time I used in the isBetween condition.

 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;
}

原文由 Woppi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题