Полагаю, я тоже дам ответ:
Лично мне нравится стараться избегать необоснованного объявления переменных, вызовов методов и вызовов конструктора, поскольку все они дорогостоящие по производительности. (в пределах разумного, конечно)
Я собирался оставить это как просто комментарий под Ответом, данным @AnthonyWJones, но подумал лучше.
// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
return this.setTime( 864E5 * days + this.valueOf() ) && this;
};
// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
return date.setTime( 864E5 * days + date.valueOf() ) && date;
};
// Basic Function declaration...
function addDaysToDate( date, days ) {
return date.setTime( 864E5 * days + date.valueOf() ) && date;
};
Вышеуказанное будет уважать DST. Это означает, что если вы добавите количество дней, пересекающих летнее время, отображаемое время (часы) изменится, чтобы отразить это.
Пример:
2 ноября 2014 02:00 был конец летнего времени.
var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt ); // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) ); // Tue Nov 11 2014 09:30:00
Если вы хотите сохранить время по летнему времени (10:30 все равно будет 10:30) ...
// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
return this.setDate( this.getDate() + days ) && this;
};
// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
return date.setDate( date.getDate() + days ) && date;
};
// Basic Function declaration...
function addDaysToDate( date, days ) {
return date.setDate( date.getDate() + days ) && date;
};
Итак, теперь у вас есть ...
var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt ); // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) ); // Tue Nov 11 2014 10:30:00