Проверить дату с текущей датой в 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..
}