Ответ 1
if (date1.getTime() > date2.getTime()) {
alert("The first date is after the second date!");
}
Возможный дубликат:
Сравните 2 даты с JavaScript
Я хотел бы сравнить две даты в javascript. Я занимаюсь некоторыми исследованиями, но все, что я могу найти, это как вернуть текущую дату. Я хочу сравнить две отдельные даты, не связанные с сегодняшним днем. Как это сделать.
var startDate = Date(document.form1.Textbox2);
if (date1.getTime() > date2.getTime()) {
alert("The first date is after the second date!");
}
new Date('1945/05/09').valueOf() < new Date('2011/05/09').valueOf()
Даты JavaScript могут сравниваться с использованием тех же операторов сравнения, что и остальные типы данных: > , <, < =, > =, ==,! =, ===,! ==.
Если у вас есть две даты A и B, то A < B, если A снова возвращается в прошлое, чем B.
Но похоже, что у вас возникают проблемы с превращением строки в дату. Вы делаете это, просто передавая строку в качестве аргумента для новой даты:
var someDate = new Date("12/03/2008");
или, если требуемая строка - это значение поля формы, как кажется, это может быть:
var someDate = new Date(document.form1.Textbox2.value);
Если эта строка не является тем, что JavaScript распознает как дату, вы все равно получите объект Date, но он будет "недействительным". Любое сравнение с другой датой вернет false. При преобразовании в строку он станет "Недействительной датой". Его функция getTime() вернет NaN, а вызов isNaN() в самой дате вернет true; что простой способ проверить, является ли строка допустимой датой.
Вы можете использовать метод getTime() для объекта Date, чтобы получить отметку времени (в миллисекундах) относительно 1 января 1970 года. Если вы преобразуете свои две даты в целые временные метки, вы можете сравнить их разницу, вычитая их. Результат будет в миллисекундах, поэтому вы просто разделите на 1000 секунд, затем 60 минут и т.д.
Я предпочел бы использовать метод Date valueOf вместо === или! ==
Похоже, что === сравнивает внутренние ссылки на объекты и ничего относительно даты.
Вы можете попробовать этот код для проверки того, какое значение даты является самым высоким из двух дат в формате MM/DD/YYYY:
function d_check() {
var dl_sdt=document.getElementIdBy("date_input_Id1").value; //date one
var dl_endt=document.getElementIdBy("date_input_Id2").value; //date two
if((dl_sdt.substr(6,4)) > (dl_endt.substr(6,4))) {
alert("first date is greater");
return false;
}
else if((((dl_sdt.substr(0,2)) > (dl_endt.
substr(0,2)))&&(frdt(dl_sdt.substr(3,2)) > (dl_endt.substr(3,2))))||
(((dl_sdt.substr(0,2)) > (dl_endt.substr(0,2)))&&
((dl_sdt.substr(3,2)) < (dl_endt.substr(3,2))))||
(((dl_sdt.substr(0,2)) == (dl_endt.substr(0,2)))&&((dl_sdt.substr(3,2)) >
(dl_endt.substr(3,2))))) {
alert("first date is greater");
return false;
}
alert("second date is digher");
return true;
}
/* для проверки этого.... создайте форму и дайте id двум входным данным. Формат даты должен быть мм/дд/гггг или мм-дд-гггг или мм: дд: гггг или мм.дд. yyyy вот так. */
Вы можете попробовать добавить следующий код script, чтобы реализовать это:
if(CompareDates(smallDate,largeDate,'-') == 0) {
alert('Selected date must be current date or previous date!');
return false;
}
function CompareDates(smallDate,largeDate,separator) {
var smallDateArr = Array();
var largeDateArr = Array();
smallDateArr = smallDate.split(separator);
largeDateArr = largeDate.split(separator);
var smallDt = smallDateArr[0];
var smallMt = smallDateArr[1];
var smallYr = smallDateArr[2];
var largeDt = largeDateArr[0];
var largeMt = largeDateArr[1];
var largeYr = largeDateArr[2];
if(smallYr>largeYr)
return 0;
else if(smallYr<=largeYr && smallMt>largeMt)
return 0;
else if(smallYr<=largeYr && smallMt==largeMt && smallDt>largeDt)
return 0;
else
return 1;
}
function fn_DateCompare(DateA, DateB) { // this function is good for dates > 01/01/1970
var a = new Date(DateA);
var b = new Date(DateB);
var msDateA = Date.UTC(a.getFullYear(), a.getMonth()+1, a.getDate());
var msDateB = Date.UTC(b.getFullYear(), b.getMonth()+1, b.getDate());
if (parseFloat(msDateA) < parseFloat(msDateB))
return -1; // lt
else if (parseFloat(msDateA) == parseFloat(msDateB))
return 0; // eq
else if (parseFloat(msDateA) > parseFloat(msDateB))
return 1; // gt
else
return null; // error
}
function validateform()
{
if (trimAll(document.getElementById("<%=txtFromDate.ClientID %>").value) != "") {
if (!isDate(trimAll(document.getElementById("<%=txtFromDate.ClientID %>").value)))
msg = msg + "<li>Please enter valid From Date in mm/dd/yyyy format\n";
else {
var toDate = new Date();
var txtdate = document.getElementById("<%=txtFromDate.ClientID %>").value;
var d1 = new Date(txtdate)
if (Date.parse(txtdate) > Date.parse(toDate)) {
msg = msg + "<li>From date must be less than or equal to today date\n";
}
}
}
if (trimAll(document.getElementById("<%=txtToDate.ClientID %>").value) != "") {
if (!isDate(trimAll(document.getElementById("<%=txtToDate.ClientID %>").value)))
msg = msg + "<li>Please enter valid To Date in mm/dd/yyyy format\n";
else {
var toDate = new Date();
var txtdate = document.getElementById("<%=txtToDate.ClientID %>").value;
var d1 = new Date(txtdate)
if (Date.parse(txtdate) > Date.parse(toDate)) {
msg = msg + "<li>To date must be less than or equal to today date\n";
}
}
}