Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Сравненние дат


Автор: doook 28.10.2010, 10:46
Доброго дня!
Задача состоит в том, что нужно построить условие для отбора объектов из массива которые по значениям свойств датаНачала и датаКонца их действия, подходят нам для вывода их на экран...

Пример объекта:
Код

var list = [{
                name: "obj1",
                startTime: "Sun Oct 10 2010 04:05:06 GMT-0700",
                endTime: "Sun Oct 30 2010 04:05:06 GMT-0700"
},
{
                name: "obj2",
                startTime: "Sun Oct 20 2010 04:05:06 GMT-0700",
                endTime: "Sun Oct 31 2010 04:05:06 GMT-0700"
},
{
                name: "obj3",
                startTime: "Sun Oct 28 2010 04:05:06 GMT-0700",
                endTime: "Sun Nov 30 2010 04:05:06 GMT-0700"
}];


Ф-ция проверки:
Код

checkDate : function(item)
{
          var start = new Date(item.startTime);
          var end = new Date(item.endTime);
          var time = new Date();
           
           
           if (start.getFullYear() <= time.getFullYear() <= end.getFullYear()) {
         if (start.getMonth() <= time.getMonth() <= end.getMonth()) {
             if (start.getDate() <= time.getDate() <= end.getDate()) {
                 return true;
             }
         }
       }
         return false;
}


Проблема в том что эта функция всегда возвращает true...

Автор: CruorVult 28.10.2010, 12:09
лучше проводить операции с датами в time-формате:
Код

checkDate : function(item)
{
          var start = new Date(item.startTime).getTime();
    var end = new Date(item.endTime).getTime();
    var time = new Date().getTime();

    if(start<=time && time<=end) {
        return true;
    }         
    return false;
}


Добавлено @ 12:11
Код

start.getFullYear() <= time.getFullYear() <= end.getFullYear() 

соответствует
Код

start.getFullYear() <= time.getFullYear()  ||  time.getFullYear()<= end.getFullYear() 

Автор: doook 28.10.2010, 13:56
Спасибо ! smile
А тройное сравнение вообще можно делать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)