带月差的JavaScript日期计算
我想计算一个新的日期,将月数添加到一个特定的日期 例如: 我有一个日期“06/30/2012”(2012年6月30日),还有一个月数“2”或“3”个月 现在我想要一个函数,它获取两个值并返回指定日期后2个月的日期 请告诉我如何做到这一点。带月差的JavaScript日期计算,javascript,date,Javascript,Date,我想计算一个新的日期,将月数添加到一个特定的日期 例如: 我有一个日期“06/30/2012”(2012年6月30日),还有一个月数“2”或“3”个月 现在我想要一个函数,它获取两个值并返回指定日期后2个月的日期 请告诉我如何做到这一点。 您可以尝试使用此代码,它包含了您需要的所有日期加减操作 Date.prototype.add = function (sInterval, iNum){ var dTemp = this; if (!sInterval || iNum
您可以尝试使用此代码,它包含了您需要的所有日期加减操作
Date.prototype.add = function (sInterval, iNum){
var dTemp = this;
if (!sInterval || iNum == 0) return dTemp;
switch (sInterval.toLowerCase()){
case "ms":
dTemp.setMilliseconds(dTemp.getMilliseconds() + iNum);
break;
case "s":
dTemp.setSeconds(dTemp.getSeconds() + iNum);
break;
case "mi":
dTemp.setMinutes(dTemp.getMinutes() + iNum);
break;
case "h":
dTemp.setHours(dTemp.getHours() + iNum);
break;
case "d":
dTemp.setDate(dTemp.getDate() + iNum);
break;
case "mo":
dTemp.setMonth(dTemp.getMonth() + iNum);
break;
case "y":
dTemp.setFullYear(dTemp.getFullYear() + iNum);
break;
}
return dTemp;
}
//sample usage
var d = new Date();
var d2 = d.add("d", 3); //+3days
var d3 = d.add("h", -3); //-3hours
var d4 = d.add("mo", 2); //+2 Months
解析片段并重新构建:
function addMonths(d, offset)
{
return new Date(d.getFullYear(), d.getMonth()+offset, d.getDate());
}
var d = new Date();
console.log(d.toDateString());
// Thu Jun 28 2012
var twoMonthsFromNow = addMonths(d, 2);
console.log(twoMonthsFromNow.toDateString());
// Sun Aug 28 112
如果你想进入下个月,当天溢出时,那么
var d = new Date(2012, 6-1, 30);
d.setMonth(d.getMonth()+3);
如果你想呆在新的一个月内,调整你的日期,然后
var d = new Date(2012, 6-1, 30);
var add_months = 8
var d2 = new Date(Math.min(new Date(d.getYear(), d.getMonth()+add_months+1, 0),
new Date(d.getYear(), d.getMonth()+add_months, d.getDate())))
这里已经有人回答了,你应该先搜索可能的副本