2016-03-24 9 views
11

Say obecny czas jest 09:34:00 (hh:mm:ss), i mam dwa razy w dwóch innych zmiennych:Jak korzystać Moment.JS aby sprawdzić czy obecny czas jest między 2 razy

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

Jak używać Moment.JS, aby sprawdzić, czy bieżący czas jest między beforeTime i afterTime?

Widziałem isBetween(), a ja starałem się go używać jak:

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

ale to nie działa, ponieważ tak szybko, jak sformatować pierwszy (aktualny czas) chwilę na sznurku, to już nie obiekt chwilowy. Ja również próbowałem przy użyciu:

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

ale mam false, bo znowu, kiedy formatować aktualny czas, to już nie jest taki moment.

Jak to działa?

+0

Sprawdź to http://stackoverflow.com/questions/23620498/comparing-two-times-with-moment-js – nvartolomei

+0

@nvartolomei nie sądzę odpowiedź na to pytanie powiesz, jak porównać bieżący czas ..? Wydaje się porównywać 2 razy ze sobą. –

Odpowiedz

22
  • Można przekazać instancji moment na isBetween()
  • Porzuć wywołania format(), a następnie przekaż je tak, jak w pierwszym momencie() twojego drugiego próba.

To wszystko:

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

Wydaje się świetnie! +1, ale jak sformatować bieżący czas jako "hh: mm: ss" bez użycia .format()? Więc zamiast zapisywać na stałe bieżący "czas", mogę go zdobyć przez moment? –

+0

Zasadniczo sposób na zrobienie czegoś takiego: 'moment ('hh: mm: ss')' bez poświęcania czasu, ponieważ chcę chwili, aby dać mi to ... –

+1

Ah, w takim przypadku po prostu wykonaj 'moment() '. nie musisz podawać formatu wejściowego, jeśli nie wprowadzisz łańcucha czasu. Później, kiedy faktycznie chcesz wydrukować datę w kodzie HTML dla użytkownika, chcesz nadać chwilę format * output *, więc użyjesz '.format ('hh: mm: ss')', ale to jest ostatnim krokiem. Dla wszystkich pośrednich (obliczenia, porównania itd.) Format nie jest potrzebny. –

-2

Przykładem na tej stronie jest

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

nie ma wezwanie do format funkcji jak w kodzie więc proponuję spróbować

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

Powinien przekazać ciąg formatu parse jako drugi argument (patrz moja odpowiedź), w przeciwnym razie moment spowoduje zgłoszenie ostrzeżenia o wycofaniu. –

Powiązane problemy