С momentjs, как мне сказать, если 2 момента представляют один и тот же день (не, обязательно, одно и то же время)?

У меня есть 2 объекта момента, moment1 и moment2:

enter image description here

Почему moment1.isSame(moment2, 'date') возвращает ложь??

Насколько я понимаю, проверка moment1.isSame(moment2, 'day') возвращает, являются ли они тем же днем недели (по крайней мере, как это выглядит из документов). Итак, если и "день", и "дата" не работают, как правильно определить, представляют ли 2 даты один и тот же день?

Я мог бы поклясться, что использовал moment1.isSame(moment2, 'date') в прошлом, но я должен помнить неправильно...

Ответы

Ответ 1

Вы можете использовать как 'day' и 'date' для isSame.

Как говорится в документах:

Проверьте, совпадает ли момент с другим моментом.

При включении второго параметра он будет соответствовать всем единицам, равным или большему. Прохождение в month проверит month и year. Прохождение day проверяет day, month и year.

Как moment#isAfter и moment#isBefore, любой из единиц времени, которые поддерживаются за moment#startOf, поддерживается в течение moment#isSame.

В документах startOf:

Примечание: moment#startOf('date') был добавлен как псевдоним для дня в 2.13.0

Вот рабочий пример с последней версией (2.17.1):

var moment1 = moment('01/23/17', 'MM/D/YYYY');
var moment2 = moment('01/23/17', 'MM/D/YYYY');
console.log( moment1.isSame(moment2, 'day') ); // true
console.log( moment1.isSame(moment2, 'date') ); // true
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

Ответ 2

Пусть будет проще.

moment(date1).format('L') === moment(date2).format('L')