我想通過在特定日期添加若干個月來計算新日期。帶月份差異的JavaScript日期計算
例如:
我有一個日期「06月30日」(2012年6月30日),和若干個「2」或「3」個月。
現在我想要一個函數來獲取兩個值並返回指定日期後2個月的日期。
請告訴我這是如何實現的。
我想通過在特定日期添加若干個月來計算新日期。帶月份差異的JavaScript日期計算
例如:
我有一個日期「06月30日」(2012年6月30日),和若干個「2」或「3」個月。
現在我想要一個函數來獲取兩個值並返回指定日期後2個月的日期。
請告訴我這是如何實現的。
你可以嘗試把這個代碼,裏面有您需要使用日期相加一切/減法
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);
如果你想留在th Ë新的月份,調整您的日期,然後
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())))
有人在這裏回答它已經,你應該尋找第一http://stackoverflow.com/questions/7763327/how-to-calculate-date-difference-in- javascript –
可能的重複http://stackoverflow.com/questions/5645058/how-to-add-months-in-javascript-date –