Проверить дату с текущей датой в jquery

Я хочу проверить, что моя дата больше текущей даты

$("#EndDate").val() ="5/13/2014" ->M/d/y

Ниже приведен код

if (Date.parse(new Date()) > Date.parse($("#EndDate").val())) { 

 //condition satisfied for today date too.

}

поэтому моя дата окончания - дата date.but, но текущая дата больше даты окончания. Зачем? как я могу проверить и проверить это. я понял, какое-то значение времени больше, чем дата окончания. но я хочу проверить только дату/месяц/год, а не время.

Ответ 1

Если:

$("#EndDate").val();

возвращает строку в формате m/d/y, вы можете превратить ее в объект даты, используя:

function parseDate(s) {
  var b = s.split(/\D/);
  return new Date(b[2], --b[0], b[1]);
}

Чтобы создать сопоставимую дату, выполните то, что вы уже делаете:

var today = new Date();
today.setHours(0,0,0,0);

Итак, теперь вы можете сделать:

if (parseDate($("#EndDate").val()) > today) {
  // date is greater than today
}

или если вы действительно должны:

if (+parseDate($("#EndDate").val()) > new Date().setHours(0,0,0,0)) ...

Обратите внимание, что когда вы делаете:

Date.parse(new Date().setHours(0, 0, 0, 0))

сначала создается новая дата из new Date(). Вызов setHours() устанавливает значение времени, но возвращаемое значение из вызова является значением времени UTC объекта Date.

Date.parse ожидает строку, которая выглядит примерно как дата и время, поэтому, если вы передадите ей значение времени в несколько раз, например 1399903200000, реализация вернется к некоторым эвристикам реализации, чтобы превратить ее в Date или NaN.

Так что, пожалуйста, не делай этого. Анализ любой строки с Date.parse зависит от реализации (даже строки, указанные в ECMA5), и возвращает разные результаты в разных браузерах. Поэтому, пожалуйста, не делайте этого.

Ответ 2

Попробуйте выполнить следующее:

var end_date    = "05/12/2014"
if(new Date() > new Date(end_date))
{   
 alert('End date should be greater than Start date');
}

fiddle

Ответ 3

Я нашел решение самостоятельно, изменяя код, подобный этому

if (Date.parse(new Date().setHours(0, 0, 0, 0)) > Date.parse($("#EndDate").val())) {
//
}

чтобы избежать сравнения времени. есть ли какой-либо другой лучший способ эффективно сравнивать даты передачи без каких-либо плагинов.

Ответ 4

Ваш запрос

проверить, что моя дата больше текущей даты

и вы даете нам это.

if (Date.parse(new Date()) > Date.parse($("#EndDate").val())) { 
    //condition satisfied for today date too.
}

просто нужно изменить свое состояние следующим образом:

if (Date.parse(new Date()) < Date.parse($("#EndDate").val())) { 
    //condition satisfied for today date too.
}

Ответ 5

var startDate = moment.parse("18/02/2013", "DD/MM/YYYY");
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();

if(dd<10) {
    dd='0'+dd
} 

if(mm<10) {
    mm='0'+mm
} 

today = dd+'/'+mm+'/'+yyyy;


if (today.isAfter(startDate)) {
...
}

Ответ 6

Однако, я опаздываю, чтобы ответить на этот вопрос, но вот мой подход к решению этой проблемы:

var TodayDate = new Date();
var endDate= new Date(Date.parse($("#EndDate").val()));

if (endDate> TodayDate) {
    // throw error here..
}