2016-06-13 15 views
5

Sto provando a confrontare un GIORNO/ORA ad es. Lunedì alle 09:00:00 con l'ora corrente per vedere se sono passato quel punto della settimana. per esempio. Se è ora 05:00:00 il Lunedi dovrebbe restituire vero però sta tornando falsa ogniConfronto di 2 date con momentoJS

var dayTime = Moment("Wednesday 17:00:00", "dddd HH:mm:ss"); 
var now = Moment(Moment.now(), "dddd HH:mm:ss"); 
console.log(Moment.utc(dayTime).isBefore(now)); //returns false all the time 

ho trovato le seguenti domande simili, ma non è sembrato per risolvere il problema dopo la formattazione del tempo.

Comparing two times with Moment JS

Se si sostituisce la moment.now() con una stringa come "Mercoledì 17:00:00" restituisce il risultato atteso.

Qualche idea su cosa devo fare per moment.now() perché funzioni correttamente?

+0

Non mi aspetterei un attimo (momento.ora(), "dddd HH: mm: ss") 'per produrre il Momento desiderato; 'moment.now()' restituisce una rappresentazione di epoca epocale e stai trasmettendo una stringa di formato completamente diversa. Prova solo il momento (momento.ora()) ' – Hamms

+1

moment.now non dovrebbe essere usato affatto. È un punto di estensione che non fa parte dell'API pubblica. per ottenere l'ora corrente basta chiamare il momento() –

risposta

2

Per chi è interessato, il codice ho postato nella mia interrogazione stava cambiando il giorno/ora, ma stava tramontando l'anno al 2015, che significava che era sempre in passato.

Per risolvere ho separato il giorno e l'ora e impostato su momento. Quindi confrontato con quello ora. per esempio.

moment().set({"Day": "Friday", "Hour": "17"}).isBefore(moment()) 
6

Moment.now può essere utilizzato come un punto di estensione, ma in realtà non è un'API pubblica. Per ottenere l'ora corrente in momenti, basta chiamare il numero moment(). Si noti che tutte le chiamate di momento utilizzano la minuscola moment.

per vedere se la data e l'ora è prima dell'ora corrente, si sarebbe solo chiamare:

moment('01/01/2016', 'MM/DD/YYYY').isBefore(moment()) 

Si potrebbe sostituire la data e il formato in questione con il proprio.

Vedo che si dispone di un formato di data che include solo il giorno della settimana e l'ora. Moment analizzerà questo, ma sii consapevole che il comportamento potrebbe non essere quello che ti aspetti. Quando analizzo il tuo appuntamento, ricevo mercoledì 30 dicembre 2015. Esattamente in quale giorno questo atterra varia a seconda del luogo. In ogni caso, dubito che sia quello che vuoi. Se possibile, vorrei ottenere l'anno, il mese e il giorno.

Se si desidera impostare il momento per mercoledì questa settimana, impostare il giorno sul momento utilizzando .day(). Per esempio:

moment().day(3).format() 
"2016-06-15T20:19:55-05:00" 
+0

Grazie per questo ma non risponde abbastanza al mio problema. Ho un giorno/ora (nessun anno) e vorrei sapere se in questo momento sono prima o dopo quel punto in una settimana, dopo aver guardato oltre (e il tuo commento) sembra che stia tornando falso a causa del giorno/ogni ora viene dato un anno in passato - qualche idea su come superare questo? – Geraint