javascript date object: ошибка при использовании функции addDays - PullRequest
2 голосов
/ 26 октября 2009

Я пытался выполнить приведенный ниже код в моем JavaScript и получил некоторое исключение

 var now3 = new Date();
 now3.addDays(-4);

Ошибка сгенерирована Ошибка выполнения Microsoft JScript: объект не поддерживает это свойство или метод

Я использую jQuery 1.3.2 на своей странице.

Что с этим не так? Пожалуйста, помогите

Ответы [ 4 ]

12 голосов
/ 26 октября 2009

Нет addDays() метода - вам нужно использовать setDate():

now3.setDate(now3.getDate() - 4);

Подробнее см. Документацию к объекту Date .

3 голосов
/ 18 августа 2011

Ну, вы можете добавить addDays к прототипу Date:

Date.prototype.addDays = function(days) {
  this.setDate( this.getDate()  + days);
  return this;
};

Это должно работать нормально.

0 голосов
/ 05 ноября 2014
now3.addDays(-4);

поставить эту функцию

Date.prototype.addDays = function(s) 
        { 

          var targetDays = parseInt(s) 
          var thisYear = parseInt(this.getFullYear()) 
          var thisDays = parseInt(this.getDate()) 
          var thisMonth = parseInt(this.getMonth() + 1) 

          var currDays = thisDays; 
          var currMonth = thisMonth; 
          var currYear = thisYear; 

          var monthArr; 

          var nonleap = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];   
          // leap year  
          var leap = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];   

          if ((thisYear % 4) == 0) {     
            if ((thisYear % 100) == 0 && (thisYear % 400) != 0) { monthArr = nonleap; }  
            else { monthArr = leap; }   
          }   
          else {  monthArr = nonleap; }  

          var daysCounter = 0; 
          var numDays = 0; 
          var monthDays = 0; 

          if( targetDays < 0) { 

            while(daysCounter < (targetDays * -1) ) { 

              if(daysCounter == 0) { 
                if((targetDays * -1) < thisDays) { 
                  break; 
                } else { 
                  daysCounter = thisDays; 
                } 
              }else { 
                numDays = monthArr[currMonth - 1]; 
                daysCounter += parseInt(numDays) 
              } 

              if(daysCounter > (targetDays * -1) ) { 
                break; 
              } 

              currMonth = currMonth - 1; 

              if(currMonth == 0) { 
                currYear = currYear - 1; 
                if ((currYear % 4) == 0) {  
                  if ((currYear % 100) == 0 && (currYear % 400) != 0) { monthArr = nonleap; }  
                  else { monthArr = leap; }   
                }   
                else {  monthArr = nonleap; }  
                currMonth = 12; 
              }   
            } 

            t = this.getTime(); 
            t += (targetDays * 86400000); 
            this.setTime(t) 
            var thisDate = new Date(currYear,currMonth - 1,this.getDate()) 
            return thisDate; 

          } else { 

            var diffDays = monthArr[currMonth - 1] - thisDays; 

            numDays = 0; 
            var startedC = true; 

            while(daysCounter < targetDays  ) { 

              if(daysCounter == 0 && startedC == true) { 
                monthDays = thisDays; 
                startedC = false; 
              }else { 
               monthDays++; 
               daysCounter++; 

                if(monthDays > monthArr[currMonth - 1]){ 
                  currMonth = currMonth + 1; 
                  monthDays = 1; 
                } 

              } 

              if(daysCounter > targetDays) { 
                break; 
              } 

              if(currMonth == 13) { 
                currYear = currYear + 1; 
                if ((currYear % 4) == 0) {  
                  if ((currYear % 100) == 0 && (currYear % 400) != 0) { monthArr = nonleap; }  
                  else { monthArr = leap; }   
                }   
                else {  monthArr = nonleap; }  
                currMonth = 1; 
              }   
            } 

            var thisDate = new Date(currYear,currMonth - 1,monthDays) 
            return thisDate; 
          } 
        } 
0 голосов
/ 10 апреля 2010

Намек Грега - путь. Вы можете найти больше информации о манипуляциях с датой в JavaScript здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...