Как сделать сравнение дат в Javascript? [дубликат]




Возможные Дубликаты:
сравните 2 Даты с JavaScript






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



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

9 ответов:

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

ссылка на объект Date

new Date('1945/05/09').valueOf() < new Date('2011/05/09').valueOf()

даты JavaScript можно сравнить с помощью тех же операторов сравнения, что и остальные типы данных: >, =, ==, != ,===,!==.

Если у вас есть две даты A и B, то A

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

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

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

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

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

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

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

похоже, что = = = сравнивает ссылки на внутренний объект и ничего не касается даты.

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'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"; 
                  }
                 }
                }

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

/*для проверки этого....создайте форму и дайте идентификаторы для двух входных данных даты.Формат даты должен быть ММ/ДД / гггг или ММ-ДД-гггг или ММ:ДД:гггг или мм. ДД.ага, вот так. * /

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

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;
}  

Comments

    Ничего не найдено.