2015-04-07 3 views
51

Я новичок в moment.js. У меня есть объект даты, и у него есть некоторое время, связанное с ним. Я просто хочу проверить, больше ли эта дата или равна сегодняшней дате, исключая время при сравнении.Как набрать только дату в moment.js

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

Я просто хочу, чтобы проверить, если dateToCompare равно или больше, чем сегодняшний день. Я проверил isSame of moment.js, но он, кажется, принимает строку и только часть даты. Но я не хочу конвертировать свою дату в строку или манипулировать ею дальше. Потому что я обеспокоен тем, что javascript может сделать что-то неожиданное при преобразовании этой даты в строку (например, добавление смещения или dst и т. Д.), Или, может быть, я ошибаюсь.

Образец isSame() из документации

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

Также я ищу что-то вроде isSame() и isAfter() в сочетании как одно заявление.

Мне нужно сравнить, используя только moment.js. Пожалуйста, не предлагайте сравнение javascript.

ответ

95

The docs are pretty clear что вы передаете второй параметр, чтобы указать степень детализации.

Если вы хотите ограничить зернистость единицей, отличной от миллисекунд, передайте единицы измерения в качестве второго параметра.

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

+4

@NoobGeek, нет, трудно написать 'm.isAfter (x, 'day') || m.isSame (x, 'day') '? – zzzzBov

+1

Я уже использовал это. Благодаря! просто хотел увидеть, есть ли общая функция, а не то, что трудно использовать и то, и другое. – NoobGeek

9

В то же время вы можете использовать isSameOrAfter метод:

moment('2010-10-20').isSameOrAfter('2010-10-20', 'day'); 
Смежные вопросы