首页 > 解决方案 > 在momentjs中检查时间是否在两个小时之间的最佳方法

问题描述

我想在我的应用程序中执行“夜间模式”之类的操作,我需要检查当前时间 fe 22:30 是否在“startNight”和“endNight”字段的范围内。

我正在尝试比较这些字段的总分钟数,如下所示:

function mode (nightStart, nightEnd) { //params disabled for example
      const now = moment('01:00', 'HH:mm');
      const nightStart = moment('22:00', 'HH:mm');
      const nightEnd = moment('06:00', 'HH:mm');

      return now.isBetween(nightStart, nightEnd);
}

它适用于例如范围'01:00' - '03:00' 并检查这些时间之间,但我想知道我是否将 nightStart 设置为 '22:00' 和 nightEnd 设置为 '06:00',因为它现在我说 01:00 不在 22:00 和 06:00 之间。

我想我必须处理午夜前后的时间,但也许还有另一种更简单的方法可以做到这一点。

非常感谢您的帮助。

标签: javascriptmomentjs

解决方案


我认为你应该用日期初始化时刻对象
例如,

const now = moment()
const nightStart = moment("2019-02-22 01:00:00", "YYYY-MM-DD HH:mm:ss")
const nightEnd = moment("2019-02-22 13:00:00", "YYYY-MM-DD HH:mm:ss")

now.isBetween(nightStart, nightEnd) // returns true

推荐阅读