Я пытаюсь использовать, momentjs
чтобы проверить, является ли данная дата сегодня или в будущем.
Это то, что я до сих пор:
<script type="text/javascript" src="http://momentjs.com/downloads/moment.min.js"></script>
<script type="text/javascript">
var SpecialToDate = '31/01/2014'; // DD/MM/YYYY
var SpecialTo = moment(SpecialToDate, "DD/MM/YYYY");
if (moment().diff(SpecialTo) > 0) {
alert('date is today or in future');
} else {
alert('date is in the past');
}
</script>
Код оценивает мою дату (31 января 2014 года) как дату в прошлом.
Есть идеи, что я делаю не так?
moment().diff(SpecialToDate)
прямо даст разницу в миллисекундах.'days'
не нужен Это будет работать для всех сценариев. SpecialToDate может быть'2018-10-26 00:00:00'
для примера.Вы можете использовать
isSame
функцию:источник
startTime
? У объекта Date нетisSame
метода ...источник
Поскольку никто, кажется, еще не упомянул об этом, самый простой способ проверить, находится ли объект даты Момента в прошлом:
Или в будущем:
Просто оставьте аргументы пустыми - это будет по умолчанию сейчас.
Там же
isSameOrAfter
иisSameOrBefore
.NB это факторы во времени. Если вам небезразличен день, посмотрите ответ Дипенду .
источник
momentObj
моем примере это пример даты. Документы специально говорят о создании нового экземпляра (текущее время), а затем проверяют, если это в прошлом, в одном утверждении. Я не предлагаю вам делатьmoment().isBefore()
что-то совершенно бессмысленное - зачем вам проверять, есть ли сейчас прошлое (или будущее)?Вы можете использовать
isAfter()
функцию запроса momentjs:Проверьте, если момент после другого момента.
Если вы хотите ограничить гранулярность единицей, отличной от миллисекунд, передайте единицы в качестве второго параметра.
http://momentjs.com/docs/#/query/is-after/
источник
инвертировать isBefore метод момента, чтобы проверить, совпадает ли дата с сегодняшним днем или в будущем, например:
источник
На всякий случай, если кому-то еще это нужно, просто сделайте это:
или если вы хотите функцию:
Где дата - это дата, которую вы хотите проверить.
объяснение
moment(0, "HH")
возвращает сегодняшний день в полночь.date1.diff(date2, "days")
возвращает количество дней между date1 и date2.Обновить
С тех пор я нашел функцию isSame , которая, на мой взгляд, является правильной функцией для определения даты на сегодняшний день:
источник
Чтобы проверить, если это сегодня :
Если мы сравним две даты, которые также содержат информацию о времени
isSame
, очевидно, не получится.diff
потерпит неудачу в случае, если две даты охватывают новый день:Я думаю, что лучший способ, даже если он не быстрый и короткий, заключается в следующем:
Чтобы проверить, если это в будущем :
Как и другие пользователи, этот
diff
метод работает.источник
Если вам нужно знать, какой из них больше, вы также можете сравнить их напрямую:
Надеюсь это поможет!
источник
если firstDate то же самое или после (в будущем) secondDate возвращает true, иначе возвращает false. Toda is firstDate = new Date ();
Есть isSame, isBefore и isAfter для примера сравнения дня;
источник
Используйте самый простой, чтобы проверить на будущее
источник
А затем просто используйте это в строке:
источник
Выберите вчера, чтобы проверить прошедшие дни или нет с помощью
moment().subtract(1, "day");
Ссылка: - http://momentjs.com/docs/#/manipulation/subtract/
источник
Если мы хотим разницу без времени, вы можете получить другую дату (только дату без времени), как показано ниже, используя формат момента.
Поскольку я столкнулся с проблемой с разницей, делая;
Итак, придумали следующее;
const dateValidate = moment(moment().format('YYYY-MM-DD')).diff(moment([YOUR SELECTED DATE HERE]).format('YYYY-MM-DD'))
Пожалуйста, не стесняйтесь комментировать, если есть что улучшить.
Спасибо,
источник
я хотел это для чего-то другого, но в конце концов нашел трюк, который вы можете попробовать
somedate.calendar(compareDate, { sameDay: '[Today]'})=='Today'
источник
проверьте следующее:
это возвращается в секундах ..
Если проверит как состояние 2 минут то
источник
Самый простой ответ будет:
Он проверит значение полуночи и даст точный результат. Это также будет работать, когда разница между двумя датами будет менее 24 часов.
источник