如何添加1年来开始更新以获取javascript中的结束日期

时间:2016-03-22 05:01:47

标签: javascript date

想要输出如下

如果开始日期是" 01-03-2016"结束日期应为" 28-02-2017" 如果开始日期是" 10-04-2016"结束日期应为" 09-04-2017"

我试过下面的代码

if (dat <= 31 && dat >= 1 && month <= 12 && month >= 1) {

            var expiryDate = new Date(n1, month - 1, dat);

            expiryDate.setFullYear(expiryDate.getFullYear() + 1);
            var day = ('0' + expiryDate.getDate()).slice(-2);
            var month1 = ('0' + (expiryDate.getMonth() + 1)).slice(-2);
            var year = expiryDate.getFullYear();
            var month = getMonthName(month1);

            var wholeenddate = day + "-" + month + "-" + year;

但它没有产生所需的输出。请帮助解决它。

3 个答案:

答案 0 :(得分:4)

364天添加到您的日期

例如

var d = new Date("2016-03-01");
d.setDate(d.getDate()+364); //outputs 28-02-2017

var d = new Date("2016-04-10");
d.setDate(d.getDate()+364); //outputs 09-04-2017

或只是添加1年次1天

d.setFullYear(d.getFullYear() + 1);
d.setDate(d.getDate()-1);

现在即使是闰年,它也会匹配你的输出:)

<强>演示

&#13;
&#13;
var d = new Date("2016-03-01");
d.setFullYear(d.getFullYear() + 1);
d.setDate(d.getDate()-1);
document.body.innerHTML += d.toString();

document.body.innerHTML += "<br>";


d = new Date("2016-04-10");
d.setFullYear(d.getFullYear() + 1);
d.setDate(d.getDate()-1);
document.body.innerHTML += d.toString();
&#13;
&#13;
&#13;

答案 1 :(得分:2)

有一个方便的图书馆来帮助解决这类问题 - moment.js(14k压缩)。

var startDate = moment('01-03-2016', 'DD-MM-YYYY');
console.log(startDate.format('DD-MM-YYYY'));
var endDate = startDate.clone();
endDate.add(1, 'years').subtract('1', 'days');
console.log(endDate.format('DD-MM-YYYY'));

答案 2 :(得分:0)

3种方法。

 // Add hours
 var today = new Date();
 today.setHours(today.getHours()+24*364);

 // Add days
 var nextyearDate = new Date();
 nextyearDate.setDate(today.getDate()+364);

 // More reliable way : Add year & subtract a day.. Hope this works...! Works for 01/01/2016
 var nextDate = new Date();
 nextDate.setYear(nextDate.getFullYear()+1);
 nextDate.setDate(nextDate.getDate()-1);