Одним из сложных моментов в программировании я считаю работу с датами. Особенно если речь идет о изменении дат и операций с ними, например, сложении или разности дат, прибавлении к дате 1 месяца или дня и т.п.
Рассмотрим принцип изменения дат и построим функцию, которая автоматически будет складывать или вычитать нужное нам время. Ее полный код выглядит следующим образом:
function converttime(onetime, day, month, year) {
var D = new Date(onetime);
D.setDate(D.getDate()+day);
D.setMonth(D.getMonth()+month);
D.setFullYear(D.getFullYear()+year);
if(D.getDate() < 10) var curr_date = "0" + D.getDate(); else var curr_date = D.getDate();
if(D.getMonth() < 10) { var curr_month = D.getMonth()+1; curr_month = "0" + curr_month;} else var curr_month = D.getMonth()+1; //Всегда +1 для месяца - т.к. счет с о по 11
var curr_year = D.getFullYear();
var newData = curr_year + "-" + curr_month + "-" + curr_date; //формат даты на выходе (можно менять как угодно)
alert(newData);
}
Разберем работу скрипта
Для того чтобы работать с датой, необходимо переменной задать объект даты: var D = new Date(onetime); Сама дата будет подставляться пользователем в переменной onetime. Изменение даты осуществляется за счет функций setDate, setMonth и setFullYear, которые позволяют изменять день, месяц, год, как вперед, так и назад.
За счет этих установок мы и будем менять данные, которые будут передаваться с переменных day, month, year в функцию. Далее идут два if условия, которые позволят вывести конечную дату в правильном виде. И на строке var newData мы формируем конечную, измененную дату. alert, который есть в функции вы можете убрать и сделать вывод результатирующей даты в свой тег. Пример: document.getElementById('pr').innerHTML = newData; В этом случае вместо alert новая дата будет выводиться в id = pr.
Чтобы использовать функцию смены даты, используйте код:
converttime('2016-05-02 02:07:16', 0, 12, 0); //+12 месяцев
converttime('2016-05-02 02:07:16', 7, 2, 0); //+2 месяца + 7 дней
converttime('2016-05-02', 0, -4, 0); //-4 месяца
converttime('04.05.2016', 0, 0, 1); //+1 год
Думаю с помощью моей функции по изменению дат вы сможете реализовать нужный вам функционал на своем сайте.
Спасибо