2016-03-24 5 views
11

der aktuellen Zeit Say 09:34:00 ist (hh:mm:ss), und ich habe zwei weitere Male in zwei Variablen:Wie Moment.JS verwenden, um zu überprüfen, ob die aktuelle Zeit zwischen 2 mal

var beforeTime = '08:34:00', 
    afterTime = '10:34:00'; 

Wie verwende ich Moment.JS um zu überprüfen, ob die aktuelle Zeit zwischen beforeTime und afterTime liegt?

Ich habe isBetween() gesehen, und ich habe versucht, es wie zu verwenden:

moment().format('hh:mm:ss').isBetween('08:27:00', '10:27:00') 

aber das funktioniert nicht, weil, sobald ich den ersten Format (aktuelle Zeit) Moment in einen String, es ist kein Momentobjekt mehr. Ich habe auch versucht, mit:

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')) 

aber ich bekomme false, weil wieder, wenn ich die aktuelle Zeit zu formatieren, es ist nicht mehr ein Moment.

Wie bekomme ich das zur Arbeit?

+0

prüfen http://stackoverflow.com/questions/23620498/comparing-two-times-with-moment-js – nvartolomei

+0

@nvartolomei Ich glaube nicht die Antworten zu dieser Frage sagen Ihnen, wie man zwischen der aktuellen Zeit zu vergleichen ..? Es scheint 2 mal miteinander zu vergleichen. –

Antwort

22
  • Sie Moment Instanzen passieren zu isBetween()
  • kann, um zu versuchen
  • lassen Sie die format() Aufrufe, was Sie wollen, ist Parse-Formate wie Int der erste Moment() Ihrer Sekunde übergeben Versuch.

Das ist alles: Das

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' 
+0

Das scheint großartig! +1, aber wie würde ich die aktuelle Zeit als 'hh: mm: ss' formatieren, ohne .format() zu verwenden? Also, anstatt die aktuelle 'Zeit' zu hardcodieren, könnte ich es über einen Moment bekommen? –

+0

Im Grunde eine Art, etwas zu tun wie: 'Moment ('hh: mm: ss')' ohne tatsächlich die Zeit zu geben, weil ich den Moment mir geben will ... –

+1

Ah, in diesem Fall mach einfach 'moment() '. Sie müssen kein Eingabeformat angeben, wenn Sie keine Zeitzeichenfolge eingeben. Später, wenn Sie das Datum tatsächlich im HTML-Format für den Benutzer ausdrucken möchten, möchten Sie dem Moment ein * output * -Format geben, also verwenden Sie '.format ('hh: mm: ss')', aber das ist der allerletzte Schritt. Für alles dazwischen (Berechnungen, Vergleiche etc.) wird kein Format benötigt. –

-2

Das Beispiel auf dieser Seite ist

moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true 

dort im Code format Funktion kein Anruf ist so schlage ich

moment('09:34:00').isBetween('08:34:00', '10:34:00'); 
+2

Er sollte als zweites Argument eine Parse-Format-Zeichenfolge übergeben (siehe meine Antwort), andernfalls wird der Moment eine Verwarnungs-Warnung auslösen. –

Verwandte Themen