如何在JavaScript中添加月份到date?

我想在JavaScript中添加几个月的date。

例如:我插入date06/01/2011 (格式mm/dd/yyyy ),现在我想添加8个月到这个date。 我想要的结果是02/01/2012

所以当增加几个月时,年份也可能增加。

从这里 :

 var jan312009 = new Date(2009, 0, 31); var eightMonthsFromJan312009 = jan312009.setMonth(jan312009.getMonth()+8); 

将date分为年,月和日组件,然后使用date :

 var d = new Date(year, month, day); d.setMonth(d.getMonth() + 8); 

date将负责确定年份。

我看了一下datejs,并删除了添加几个月来处理边缘情况(闰年,更短的月份等)所需的代码:

 Date.isLeapYear = function (year) { return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)); }; Date.getDaysInMonth = function (year, month) { return [31, (Date.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; }; Date.prototype.isLeapYear = function () { return Date.isLeapYear(this.getFullYear()); }; Date.prototype.getDaysInMonth = function () { return Date.getDaysInMonth(this.getFullYear(), this.getMonth()); }; Date.prototype.addMonths = function (value) { var n = this.getDate(); this.setDate(1); this.setMonth(this.getMonth() + value); this.setDate(Math.min(n, this.getDaysInMonth())); return this; }; 

这将添加“addMonths()”函数到任何应处理边界情况的JavaScriptdate对象。 感谢Coolite公司!

使用:

 var myDate = new Date("01/31/2012"); var result1 = myDate.addMonths(1); var myDate2 = new Date("01/31/2011"); var result2 = myDate2.addMonths(1); 

– >> newDate.addMonths – > mydate.addMonths

result1 =“2012年2月29日”

result2 =“2011年2月28日”

我强烈build议看看datejs 。 随着它的API,它变得下降死简单添加一个月(和许多其他datefunction):

 var one_month_from_your_date = your_date_object.add(1).month(); 

datejs在于它处理边缘情况,因为从技术上讲,你可以使用本地的Date对象和附加的方法来做到这一点。 但是你最终把你的头发从边缘的箱子里拿出来,这些datejs已经为你照顾好了。

另外它是开源的!