我想在 JavaScript 中为日期添加月份。
例如:我正在插入日期06/01/2011
(格式mm/dd/yyyy
),现在我想在这个日期上加上 8 个月。我希望结果是02/01/2012
.
所以当增加月份时,年份也可能增加。
我想在 JavaScript 中为日期添加月份。
例如:我正在插入日期06/01/2011
(格式mm/dd/yyyy
),现在我想在这个日期上加上 8 个月。我希望结果是02/01/2012
.
所以当增加月份时,年份也可能增加。
2019 年 6 月 25 日更正:
var newDate = new Date(date.setMonth(date.getMonth()+8));
旧 从这里:
var jan312009 = new Date(2009, 0, 31);
var eightMonthsFromJan312009 = jan312009.setMonth(jan312009.getMonth()+8);
将您的日期拆分为年、月和日组件,然后使用Date:
var d = new Date(year, month, day);
d.setMonth(d.getMonth() + 8);
日期将负责确定年份。
我查看了 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()”函数添加到任何应该处理边缘情况的 javascript 日期对象。感谢 Coolite Inc!
利用:
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
结果 1 =“2012 年 2 月 29 日”
结果 2 =“2011 年 2 月 28 日”
我强烈建议您查看datejs。有了它的 api,添加一个月(以及许多其他日期功能)变得非常简单:
var one_month_from_your_date = your_date_object.add(1).month();
datejs
它的优点在于它可以处理边缘情况,因为从技术上讲,您可以使用本机Date
对象及其附加方法来做到这一点。但是你最终会把你的头发从边缘情况拉出来,这datejs
已经为你照顾好了。
另外它是开源的!