Часто игнорируются функция объекта Javacript Date является то, что установка атрибутов индивидуальных дат (число, месяц, год и т.д.) до значений за пределами их нормального диапазона автоматически настроить другие атрибуты даты, так что в результате дата действительна.
Например, если d
является дата, то вы можете сделать d.setDate (d.getDate() + 20)
и d
будет дата через 20 дней наладив месяцы и даже годы appropriatley по мере необходимости.
Используя это, следующая функция принимает дату начала и объекта продолжительность и возвращает дату по истечении указанного периода времени:
function dateAfter (date, duration) {
if (typeof duration === 'number') // numeric parameter is number of days
duration = {date:duration};
duration.year && date.setYear (date.getYear() + duration.year);
duration.month && date.setMonth (date.getMonth() + duration.month);
duration.date && date.setDate (date.getDate() + duration.date);
return date;
}
// call as follows :
var date = dateAfter (new Date (2012, 5, 15), {year: 1}); // adds one year
console.log (date);
date = dateAfter (date, {month:5, date: 4}); // adds 5 months and 4 days
console.log (date);
date = dateAfter (date, 7 * 4); // adds 4 weeks
console.log (date);
// to return the end date asked by the op, use
var date = dateAfter (new Date (2012, 5, 15), {year: 1, date: -1});
в годы ... привет ... и я см. 12 «МЕСЯЦЫ» ??? –
Возможный дубликат [Как добавить количество дней до сегодняшней даты?] (Http://stackoverflow.com/questions/3818193/how-to-add-number-of-days-to-todays-date) –