2013-08-27 4 views
1

Я нашел фрагмент кода, который добавляет дни к указанной дате. Однако он работает только тогда, когда дата находится в формате YY-MM-DD, но она не работает, если она находится в формате DD-MM-YY.Добавить дни до настоящего времени

Fiddle для YY-MM-DD формата (рабочего)

Fiddle для DD-MM-YY формата (не работает)

Далее я проверил, что если я сделать предупреждение для someDate.getDate() это говорит NaN Not A Number

someDate = new Date('27-08-2013'); 
alert(someDate.getDate()); //NaN 

Любая помощь wi будет высоко оценена.

+0

Это просто потому, что 'метод date' только принимает его как «ММ-ДД-ГГГГ» – putvande

+1

Да, конструктор даты требует определенного формата (тот, который использует Date.parse: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Object s/Дата/синтаксический анализ). Сначала вы должны преобразовать другие даты в этот формат. Также см. Http://xkcd.com/1179/. –

+0

Если библиотека подходит для вас, вы можете посмотреть на [momentjs] (http://momentjs.com/). –

ответ

0

Если ваш ввод DD-MM-YY, вы можете попробовать split строку. Проверьте мою скрипку:

http://jsfiddle.net/4RZAa/1/

Я split строку, а затем введите нужный формат в функции даты.

1

Я всегда создаю 7 функций, чтобы работать с датой в JS: addSeconds, addMinutes, addHours, addDays, addWeeks, addMonths, addYears. Все они работают в любом формате.

Вы можете увидеть пример здесь: http://jsfiddle.net/tiagoajacobi/YHA8x/

Как использовать:

var now = new Date(); 
console.log(now.addWeeks(3)); 

Это те функции:

 Date.prototype.addSeconds = function(seconds) { 
      this.setSeconds(this.getSeconds() + seconds); 
      return this; 
     }; 

     Date.prototype.addMinutes = function(minutes) { 
      this.setMinutes(this.getMinutes() + minutes); 
      return this; 
     }; 

     Date.prototype.addHours = function(hours) { 
      this.setHours(this.getHours() + hours); 
      return this; 
     }; 

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

     Date.prototype.addWeeks = function(weeks) { 
      this.addDays(weeks*7); 
      return this; 
     }; 

     Date.prototype.addMonths = function (months) { 
      var dt = this.getDate(); 

      this.setMonth(this.getMonth() + months); 
      var currDt = this.getDate(); 

      if (dt !== currDt) { 
       this.addDays(-currDt); 
      } 

      return this; 
     }; 

     Date.prototype.addYears = function(years) { 
      var dt = this.getDate(); 

      this.setFullYear(this.getFullYear() + years); 

      var currDt = this.getDate(); 

      if (dt !== currDt) { 
       this.addDays(-currDt); 
      } 

      return this; 
     }; 
Смежные вопросы