2017-01-25 4 views
0

я 2 momentjs объекты, moment1 и moment2:С помощью momentjs, как я могу определить, представляют ли 2 момента один и тот же день (не обязательно, в одно и то же время)?

enter image description here

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

Я понимаю, что проверка moment1.isSame(moment2, 'day') возвращается, являются ли они в тот же день недели (по крайней мере, это то, что он выглядит как из документации). Поэтому, если «день» и «дата» не работают, каков правильный способ определить, соответствуют ли две даты в тот же день?

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

ответ

4

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

docs Как говорит:

Проверьте момент такой же, как другой момент.

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

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

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

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

Здесь рабочий пример с Lastest версии (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>

+0

Таким образом, это просто непоследовательность в momentjs? В другом месте «день» означает «день недели» (например: 'moment1.get ('day')' возвращает 1)? И это недавнее изменение в momentjs (что 'moment1.isSame (moment2, 'date')' больше не работает)? Я использовал «дату» в прошлом, но кто-то еще в моей команде обновлял libs на днях, так что, возможно, momentjs был одним из них ... – Troy

+0

@Troy обновил мой ответ, вы можете использовать как 'date', и 'day', он отлично работает в фрагменте. В моем первом ответе я не проверял, что «дата» работает. – VincenzoC

+0

Видимо, «дата» не работает. Смотрите мой первоначальный скриншот. Если «день» более последователен, я думаю, что я просто использую это. – Troy