我有一个函数,我从开始日期和月份(任期)计算结束日期。
防爆。我的开始日期2014-05-05
并在其中添加1个月后会显示2014-06-05
。这对我来说是正确的。
但是,如果我要添加2014-02-01
,则显示2014-03-01
这是错误的。它应显示2014-02-28
。
以下是我的功能:
function getEndDate() {
var start_date = $("#start_date").val();
var tenure = $("#tenure").val();
if (/^\d{4}\-\d{2}\-\d{2}$/i.test(start_date)) {
var parts = start_date.split("-");
var year = parts[0] && parseInt(parts[0], 10);
var month = parts[1] && parseInt(parts[1], 10);
var day = parts[2] && parseInt(parts[2], 10);
var duration = parseInt(tenure, 10);
if (day <= 31 && day >= 1 && month <= 12 && month >= 1) {
var expiryDate = new Date(year, month+duration, day);
expiryDate.setFullYear(expiryDate.getFullYear());
day = ('0' + expiryDate.getDate()).slice(-2);
month = ('0' + (expiryDate.getMonth())).slice(-2);
year = expiryDate.getFullYear();
$("#end_date").val(year + "-" + month + "-" + day);
} else {
// display error message
}
}
}
请让我知道我哪里出错。
答案 0 :(得分:0)
当您添加日期时,最简单的方法是总和毫秒,就像我上一个例子中所做的那样,或者像这样操纵日期对象:
date = new Date(); //current date
future_date = new Date(date.getYear(), date.getMonth() + 1, date.getDay(), date.getHours(), date.getMinutes(), date.getSeconds());
//date -> Wed May 28 2014 21:43:52 GMT+0200 (CEST)
//future_date -> Sun Jun 03 114 21:43:52 GMT+0200 (CEST)