Як порівняти лише дату в moment.js


107

Я новачок у moment.js. У мене є об’єкт дати, і він певний час пов'язаний з ним. Я просто хочу перевірити, чи ця дата більша або дорівнює сьогоднішній даті, виключаючи час порівняння.

 var dateToCompare = 2015-04-06T18:30:00.000Z

Я просто хочу перевірити, чи датаToCompare дорівнює або перевищує сьогоднішню дату. Я перевірив isSame of moment.js, але, здається, він містить рядок і лише частину дати. Але я не хочу перетворювати свою дату в рядок або маніпулювати нею далі. Оскільки я переживаю, що javascript може зробити щось несподіване при перетворенні цієї дати в рядок (наприклад, додавання зміщення або dst тощо), або я можу помилятися.

Зразок isSame () від документів

moment('2010-10-20').isSame('2010-10-20');

Також я шукаю щось на зразок isSame () та isAfter (), поєднане як одне твердження.

Мені потрібно порівняти, використовуючи тільки moment.js. Будь ласка, не пропонуйте звичайне порівняння дати JavaScript.

Відповіді:


183

Документи цілком зрозуміло, що ви передаєте другий параметр, щоб вказати деталізацію.

Якщо ви хочете обмежити деталізацію одиницею, відмінною від мілісекунд, передайте одиниці як другий параметр.

moment('2010-10-20').isAfter('2010-01-01', 'year'); // false
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true

Оскільки другий параметр визначає точність, а не лише одне значення для перевірки, за допомогою дня перевірятиметься рік, місяць і день.

Для вашого випадку ви переходите 'day'як другий параметр.


1
Дякую! здається, мені не потрібно перетворювати на рядок. Але чи є у нас якийсь загальний метод для isSame () та isAfter ()
NoobGeek

2
Я це вже використав. Дякую! просто хотів дізнатися, чи є загальна функція, не те, що важко використовувати обидва.
NoobGeek

@kabirbaidhya перед тим, як робити помітні непотрібні правки, вважається ввічливим розмістити коментар до питань та відповідей, зазначаючи проблеми. Я не вважаю, що внесені вами зміни були потрібні, тому я відкотив їх назад. Якщо ви вважаєте, що інформація була важливою, будь ласка, розмістіть власну відповідь.
zzzzBov

4
Просто для доповнення: "Оскільки другий параметр визначає точність, а не лише одне значення для перевірки, за допомогою дня перевірятиметься рік, місяць і день."
eveevans

6
@NoobGeek Зараз є isSameOrBefore () і isSameOrAfter () від версії 2.10.7.
WhiteHotLoveTiger


6

У моєму випадку я зробив наступний код для порівняння 2 дати, це може допомогти вам ...

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 Greter 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>


6

Ви можете використовувати startOf('day')метод для порівняння лише дати

Приклад:

var dateToCompare = moment("06/04/2015 18:30:00");
var today = moment(new Date());

dateToCompare.startOf('day').isSame(today.startOf('day'));
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.