如果当前时间大于且小于特定时间,则如何调用函数

时间:2016-08-25 20:09:19

标签: javascript jquery

我试图在特定时间之间调用函数..在6:00:00 AM到8:00:00 PM之间应执行myFunction()..否则应执行otherFunction()。

if (new Date().getHours() > "6" && new Date().getHours() < "20") {
              myFunction();
} else {
              otherFunction();
}

以上有时会有效...但我觉得它不准确......我也在使用moment.js和:

if (moment().format("h:mm:ss A") > "6:00:00 AM" && moment().format("h:mm:ss A") < "8:00:00 PM") {

我想我用以下方法解决了这个问题:

    var now = moment();
    var amStart = moment('9:00 AM', 'h:mm A');
    var amFinish = moment('10:00 PM', 'h:mm A');
    if (now.isAfter(amStart) && now.isBefore(amFinish)) {
      console.log('Success Function');

    } else {
      console.log('Failure Function')
    }

3 个答案:

答案 0 :(得分:1)

getHours()返回一个数字,而不是字符串,因此您应该与数字进行比较。

您需要使用>=,而不是>,因为当它6:10时,getHours()将返回6,{{1不是真的。

6 > 6

答案 1 :(得分:0)

您可以使用时刻js的isAfter()和isBefore()方法。 doc

   var date = new Date();
    if (moment(date).isAfter("6:00:00 AM") && moment(date).isBefore("8:00:00 PM") ) {
      successfuntion();
    } else {
      failerfunction();
    }

这是一个小提琴

https://jsfiddle.net/Refatrafi/yps8L631/4/

答案 2 :(得分:0)

这对我有用。

var now = moment();
var amStart = moment('9:00 AM', 'h:mm A');
var amFinish = moment('10:00 PM', 'h:mm A');
if (now.isAfter(amStart) && now.isBefore(amFinish)) {
  console.log('Success Function');

} else {
  console.log('Failure Function')
}