2016-08-25 13 views
0

特定の時間の間に関数を呼び出そうとしています..午前6:00:00から午後8:00:00までmyFunction()他の場合はotherFunction()を実行する必要があります。現在の時刻が特定の時刻よりも大きく、特定の時刻よりも小さい場合に関数を呼び出す方法

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') 
    } 
:私は私がそれを解決すると思う

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

:私もmoment.jsを使用した...

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

上記は時々動作します..しかし、私はその正確ではないと感じます

+0

「しかし、私は正確ではない」と感じている。何が問題/疑問に思える? – depperm

+2

数値と比較して文字列と比較しないでください。 – Barmar

答えて

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/

+0

の代わりに' 20'でなければなりません。 TypeError:moment(...)。format(...)。isAfterは関数ではありません – substancev

+0

新しい日付()の書式をここで瞬間(date、 'new date()format')与える必要があります。 say(date、 'YYYY-MM-DD') –

+0

@ Substratevはjsfiddleを作成し、理解できるようにコードを変更しました。 –

1

getHours()は数字ではなく文字列を返します。数字と比較する必要があります。

あなたはそれが6:10だとき、getHours()6を返し、6 > 6が真ではないので、>=、ない>を使用する必要があります。

var hour = new Date().getHours(); 
if (hour >= 6 && hour < 20) { 
    myFunction(); 
} else { 
    otherFunction(); 
} 
+0

'8' –

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') 
} 
関連する問題