如何在startdate中添加1年以获取javascript中的结束日期

如何在startdate中添加1年以获取javascript中的结束日期,javascript,date,Javascript,Date,想要下面这样的输出吗 如果开始日期为“2016年3月1日”,则结束日期应为“2017年2月28日” 如果开始日期为“2016年4月10日”,则结束日期应为“2017年4月9日” 我试过下面的代码 if (dat <= 31 && dat >= 1 && month <= 12 && month >= 1) { var expiryDate = new Date(n1, month - 1, dat)

想要下面这样的输出吗

如果开始日期为“2016年3月1日”,则结束日期应为“2017年2月28日” 如果开始日期为“2016年4月10日”,则结束日期应为“2017年4月9日”

我试过下面的代码

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;
if(日期=1&&month=1){
var expiryDate=新日期(n1,第1个月,日期);
expiryDate.setFullYear(expiryDate.getFullYear()+1);
var day=('0'+expiryDate.getDate()).slice(-2);
var month1=('0'+(expireydate.getMonth()+1)).slice(-2);
var year=expiryDate.getFullYear();
var月=getMonthName(month1);
var wholeenddate=日+“-”+月+“-”+年;

但它不能产生期望的输出。请帮助解决它。

在日期前添加364天

比如说

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

或者只增加1年不足1天

d.setFullYear(d.getFullYear() + 1);
d.setDate(d.getDate()-1);
现在,即使是闰年,它也将与您的输出完全匹配:)

演示

var d=新日期(“2016-03-01”);
d、 setFullYear(d.getFullYear()+1);
d、 setDate(d.getDate()-1);
document.body.innerHTML+=d.toString();
document.body.innerHTML+=“
”; d=新日期(“2016-04-10”); d、 setFullYear(d.getFullYear()+1); d、 setDate(d.getDate()-1); document.body.innerHTML+=d.toString();
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);

有一个方便的库可以帮助您完成这类工作-(14k拉链)


是否要将365天添加到当前日期?如果我添加365天,则如果我的日期为“01-03-2016”,则它将给出结束日期“01-03-2017”闰年会发生什么?;@piyush 2016-01-01年的产量应该是多少?2016-12年的产量应该是多少-31@piyush最后检查更新的代码,它给出了您想要的输出,我如何在php中实现同样的输出?@epascarello..感谢您注意到这一点。我已经编辑了..希望最新的答案有效
 // 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);
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'));