javascript - Hvordan sammenligne bare dato i moment.js
Jeg er ny på moment.js. Jeg har et dato-objekt og det har litt tid knyttet til det. Jeg vil bare sjekke om den datoen er større enn eller lik dagens dato, uten å ta tiden med i sammenligningen.
var dateToCompare = 2015-04-06T18:30:00.000Z
Jeg vil bare sjekke om dateToCompare er lik eller større enn dagens dato. Jeg har sjekket isSame fra moment.js, men det ser ut til at den tar en streng og bare datodelen. Men jeg vil ikke konvertere datoen min til streng eller manipulere den ytterligere. Fordi jeg er bekymret for at JavaScript kan gjøre noe uventet når den konverterer den datoen til streng (som å legge til offset eller sommertid, osv.), eller kanskje tar jeg feil.
Eksempel på isSame() fra dokumentasjonen
moment('2010-10-20').isSame('2010-10-20');
Jeg ser også etter noe som er en kombinasjon av isSame() og isAfter() som en enkelt setning.
Jeg trenger å sammenligne ved å bruke kun moment.js. Vennligst ikke foreslå vanlig JavaScript-datesammenligning.
Svar #1
Dokumentene er ganske tydelige på at du sender inn en annen parameter for å spesifisere granularitet.
Hvis du vil begrense detaljnivået til en enhet annen enn millisekunder, send enhetene som den andre parameteren.
moment('2010-10-20').isAfter('2010-01-01', 'year'); // false moment('2010-10-20').isAfter('2009-12-31', 'year'); // trueSiden den andre parameteren bestemmer presisjonen, og ikke bare en enkelt verdi å sjekke, vil bruk av dag sjekke for år, måned og dag.
For din sak ville du passere 'day' som den andre parameteren.
Svar #2
I mellomtiden kan du bruke isSameOrAfter-metoden:
moment('2010-10-20').isSameOrAfter('2010-10-20', 'day');
Dokumentasjon: https://momentjs.com/docs/#/query/is-same-or-after/
Svar #3
I mitt tilfelle gjorde jeg følgende kode for å sammenligne 2 datoer, kanskje det vil hjelpe deg ...
var date1 = "2010-10-20";
var date2 = "2010-10-20";
var time1 = moment(date1).format('YYYY-MM-DD');
var time2 = moment(date2).format('YYYY-MM-DD');
if(time2 > time1){
console.log('date2 is Greater than date1');
} else if(time2 < time1) {
console.log('date2 is Less than date1');
} else {
console.log('Both date are same');
}<script src="https://momentjs.com/downloads/moment.js"></script>Svar #4
Du kan bruke startOf('day')-metoden for å sammenligne bare datoen
Eksempel :
var dateToCompare = moment("06/04/2015 18:30:00");
var today = moment(new Date());
dateToCompare.startOf('day').isSame(today.startOf('day'));
