2017-03-13 10 views
0

Ich habe den folgenden Code:moment.js Datum/Zeit-Vergleiche

var timeCutoff = moment('05:00PM', 'h:mmA').format("MM/DD/YYYY hh:mmA") 
var testTime = moment('11:00AM', 'h:mmA').format("MM/DD/YYYY hh:mmA"); 

if(testTime < timeCutoff){ 
    console.log(testTime + " before " + timeCutoff); 
} 
else{ 
    console.log(testTime + " after " + timeCutoff); 
} 

Die Idee dabei ist, wenn die Zeit wird jetzt ist vor 05.00, etwas tun. Wenn die Zeit nach 5PM ist, etwas anderes tun. Hier

ist das Problem, ich erlebe:

testTime ist auf ('11: 00.00‘, 'h: mmA') und protokolliert die "nach" Bedingung, die unerwartet ist.
testTime wird auf ('12: 00PM ',' h: mmA ') gesetzt und protokolliert die unerwartete Bedingung "nach".
testTime wird auf ('01: 00PM ',' h: mmA ') gesetzt und protokolliert die "Vorher" -Bedingung, die erwartet wird.
testTime wird auf ('09: 00PM ',' h: mmA ') gesetzt und protokolliert die erwartete "after" -Bedingung.

Ich bin derzeit mit moment.js 2.17.1

Alle Vorschläge werden sehr geschätzt. Vielen Dank!

+0

Ich glaube, Sie suchen 'isBefore': https://momentjs.com/docs/#/query/is-before/ –

Antwort

2

Sie sollten die isBefore() Methode verwenden.

https://momentjs.com/docs/#/query/is-before/

var timeCutoff = moment('05:00PM', 'h:mmA'); 
var testTime = moment('11:00AM', 'h:mmA'); 

if(testTime.isBefore(timeCutoff)) { 
    console.log(testTime.format("MM/DD/YYYY hh:mmA") + " before " + timeCutoff.format("MM/DD/YYYY hh:mmA")); 
} 
else 
{ 
    console.log(testTime.format("MM/DD/YYYY hh:mmA") + " after " + timeCutoff.format("MM/DD/YYYY hh:mmA")); 
} 
+0

Verwendung if (testTime.isBefore (timeCutoff)) "testTime.isBefore ist keine Funktion" wird in der Konsole protokolliert. – gbeaven

+1

Rufen Sie noch '.format()' auf, wenn Sie die Variable 'testTime' deklarieren? Wenn dies der Fall ist, wird "testTime" eine "Zeichenfolge" und keine "Moment" -Instanz sein. Siehe mein Beispiel. – jessegavin

+0

Es scheint, dass .format() ist nur für die Präsentation dann? – gbeaven