2016-03-24 11 views
11

Dire l'ora corrente è 09:34:00 (hh:mm:ss), e ho altre due volte in due variabili:Come utilizzare Moment.JS per verificare se l'ora corrente è compreso tra 2 volte

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

Come si usa Moment.JS per verificare se l'ora corrente è compresa tra beforeTime e afterTime?

Ho visto isBetween(), e ho cercato di utilizzarlo come:

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

ma che non funziona perché non appena ho formattare il primo momento (ora corrente) in una stringa, non è più un momento oggetto. Ho anche provato ad utilizzare:

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

ma ottengo false, perché ancora una volta quando formatto l'ora attuale, non è più un momento.

Come posso farlo funzionare?

+0

Scegli questa http://stackoverflow.com/questions/23620498/comparing-two-times-with-moment-js – nvartolomei

+0

@nvartolomei Non credo che le risposte su quella domanda ti dico come confrontare tra l'ora corrente ..? Sembra confrontare 2 volte l'un l'altro. –

risposta

22
  • È possibile trasmettere le istanze momento per isBetween()
  • lascia fuori le chiamate format(), quello che vuoi è passare i formati di analisi come int il primo momento() del tuo secondo tentativo.

Questo è tutto:

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

Sembra fantastico! +1 ma come formattare l'ora corrente come 'hh: mm: ss' senza usare .format()? Quindi, invece di codificare il 'tempo' corrente, potrei ottenerlo al momento? –

+0

Fondamentalmente un modo per fare qualcosa del tipo: 'momento ('hh: mm: ss')' senza dare effettivamente il tempo, perché voglio che il momento mi dia quel ... –

+1

Ah, in tal caso basta fare 'moment() '. non è necessario specificare un formato di input se non si immette una stringa di tempo. In seguito, quando si desidera stampare effettivamente la data nell'HTML per l'utente, si vuole dare un momento al formato * output *, quindi si usa '.format ('hh: mm: ss')', ma che è l'ultimo passo. Per tutto ciò che si trova in mezzo (calcoli, confronti, ecc.) Non è necessario un formato. –

-2

L'esempio in quella pagina è

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

non c'è nessuna chiamata a format funzione nel vostro codice in modo suggerisco di provare

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

Dovrebbe passare una stringa di formato di analisi come secondo argomento (vedere la mia risposta), altrimenti il ​​momento solleverà un avviso di deprecazione. –

Problemi correlati