想要输出如下
如果开始日期是" 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;
但它没有产生所需的输出。请帮助解决它。
答案 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);
现在即使是闰年,它也会匹配你的输出:)
<强>演示强>
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;
答案 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);