2008-12-03 6 views
96

Можно создать дубликат:
Compare 2 dates with JavaScriptКак сравнить дату в Javascript?

Я хотел бы сравнить две даты в JavaScript. Я занимаюсь некоторыми исследованиями, но все, что я могу найти, это как вернуть текущую дату. Я хочу сравнить две отдельные даты, не связанные с сегодняшним днем. Как это сделать.

var startDate = Date(document.form1.Textbox2); 

ответ

200
if (date1.getTime() > date2.getTime()) { 
    alert("The first date is after the second date!"); 
} 

Reference to Date object

+2

У меня было это предложение, но функция GetTime возвращает неопределенное значение. Я не думаю, что я вполне понимаю getTime(). Предполагается, что это предопределенная функция? – 2008-12-03 20:22:30

+1

надеюсь, что это поможет http://www.comptechdoc.org/independent/web/cgi/javamanual/javadate.html – IsmailS 2010-06-01 06:15:49

+3

Кажется, что chrome и firefox поддерживают `date1> date2`, то есть без части getTime(). Кто-нибудь знает о других браузерах? – 2011-08-02 14:52:00

4

Вы можете использовать метод GetTime() на объекте Date, чтобы получить временную метку (в миллисекундах), по сравнению с 1 января 1970 года Если вы преобразовать две даты в целое число timestamps, вы можете сравнить разницу, вычитая их. Результат будет в миллисекундах, поэтому вы просто разделите на 1000 секунд, затем 60 минут и т. Д.

6

Даты JavaScript могут быть сопоставлены с использованием тех же операторов сравнения, что и остальные типы данных:>, <, < = ,> =, ==,! =, ===,! ==.

Если у вас есть две даты A и B, то A < B, если А дальше в прошлое, чем B.

Но это звучит как то, что у вас возникли проблемы с является превращение строки в дату , Вы делаете это просто передавая строку в качестве аргумента для нового Даты:

var someDate = new Date("12/03/2008"); 

или, если строка, которую вы хотите, это значение поля формы, как это кажется, что это может быть:

var someDate = new Date(document.form1.Textbox2.value); 

Если эта строка не является тем, что JavaScript распознает как дату, вы все равно получите объект Date, но он будет «недействительным». Любое сравнение с другой датой вернет false. При преобразовании в строку он станет «Недействительной датой». Его функция getTime() вернет NaN, а вызов isNaN() в самой дате вернет true; это простой способ проверить, является ли строка допустимой датой.

1

я предпочел бы использовать метод Дата valueOf вместо === или! ==

Похоже === это сравнение внутреннего объекта в референции и ничего относительно даты.

0

Вы можете попробовать добавить следующий код сценария для реализации этого:

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; 
} 
10
new Date('1945/05/09').valueOf() < new Date('2011/05/09').valueOf() 
0

Вы можете попробовать этот код для проверки которых значение даты является самым высоким из двух дат с форматом 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; 
} 

/* для проверки этого .... создать форму и дать идентификаторы на две даты формат дата inputs.The должна быть мм/дд/гггг или дд-мм-гггг или мм: дд: гггг или mm.dd.yyyy, как это.*/

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 
} 
0
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's 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's date\n"; 
        } 
       } 
       } 
Смежные вопросы