Как проверить, совпадает ли дата ввода с сегодняшней датой? - PullRequest
56 голосов
/ 21 ноября 2011

У меня есть форма ввода с идентификатором 'date_trans'. Формат ввода этой даты (который проверяется на стороне сервера) может быть любым из:

  • дд / мм / год
  • дд-мм-гггг
  • гггг-мм-дд
  • гггг / мм / дд

Однако, прежде чем отправлять форму, я хотел бы проверить, имеет ли поле date_trans дату, равную сегодняшней дате. Это нормально, если взятая дата является датой клиента (т.е. он использует js), так как я также провожу двойную проверку на сервере.

Я совершенно заблудился о том, как сравнивать даты в jQuery или просто в старом javascript. Если это помогает, я использую jquery datepicker

Ответы [ 10 ]

172 голосов
/ 21 ноября 2011

Достаточно простого сравнения дат в чистом JS:

// Create date from input value
var inputDate = new Date("11/21/2011");

// Get today's date
var todaysDate = new Date();

// call setHours to take the time out of the comparison
if(inputDate.setHours(0,0,0,0) == todaysDate.setHours(0,0,0,0)) {
    // Date equals today's date
}

Вот рабочий JSFiddle .

72 голосов
/ 08 октября 2014

для полноты, взятой из этого решения :

Вы можете использовать toDateString:

var today = new Date();
var isToday = (today.toDateString() == otherDate.toDateString());

без библиотечных зависимостей и выглядеть чище, чем 'setHours ()подход, показанный в предыдущем ответе, imho

21 голосов
/ 12 января 2014

Попробуйте использовать moment.js

moment('dd/mm/yyyy').isSame(Date.now(), 'day');

Вы можете заменить строку 'day' на 'year, month, minute', если хотите.

10 голосов
/ 21 ноября 2011
function sameDay( d1, d2 ){
  return d1.getUTCFullYear() == d2.getUTCFullYear() &&
         d1.getUTCMonth() == d2.getUTCMonth() &&
         d1.getUTCDate() == d2.getUTCDate();
}

if (sameDay( new Date(userString), new Date)){
  // ...
}

Использование методов UTC * гарантирует, что два эквивалентных дня в разных часовых поясах, совпадающих с одним и тем же глобальным днем, будут одинаковыми. (Не обязательно, если вы анализируете обе даты напрямую, но стоит подумать.)

6 голосов
/ 02 июля 2013

Просто используйте следующий код в вашем javaScript:

if(new Date(hireDate).getTime() > new Date().getTime())
{
//Date greater than today's date 
}

Измените условие в соответствии с вашими требованиями. Вот одна ссылка для сравнения Сравните в сценарии Java

0 голосов
/ 25 марта 2018

Существует более простое решение

if (inputDate.getDate() === todayDate.getDate()) {
   // do stuff
}

, например, вы не теряете время, связанное с inputDate, если есть

0 голосов
/ 25 октября 2015

Следующее решение сравнивает целую временную метку, деленную на значения часов, минут, секунд, миллис.

var reducedToDay = function(date){return ~~(date.getTime()/(1000*60*60*24));};
return reducedToDay(date1) == reducedToDay(date2)

Тильда обрезает результат деления (см. эту статью о целочисленном делении )

0 голосов
/ 14 октября 2015
TodayDate = new Date();
if (TodayDate > AnotherDate) {} else{}

<= также работает, хотя с =, возможно, должно совпадать с миллисекундами. </p>

0 голосов
/ 21 ноября 2011

Вы смотрели на datejs ? (используя соответствующий пакет глобализации для правильного разбора дд / мм / гггг)

Просто передайте дату в метод parse() и сравните с сегодняшней датой.

0 голосов
/ 21 ноября 2011

Date.js - удобная библиотека для манипулирования и форматирования дат.Это может помочь в этой ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...