为了账号安全,请及时绑定邮箱和手机立即绑定

将X个月添加到日期的JavaScript函数

将X个月添加到日期的JavaScript函数

慕哥6287543 2019-07-02 10:55:29
将X个月添加到日期的JavaScript函数我正在寻找最简单、最干净的方式将X个月添加到JavaScript日期。我还是不去了吧处理一年中的滚动或者不得不写我自己的函数.有什么内置的东西能做到这一点吗?
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

我认为这应该可以做到:


var x = 12; //or whatever offset

var CurrentDate = new Date();

console.log("Current date:", CurrentDate);

CurrentDate.setMonth(CurrentDate.getMonth() + x);

console.log("Date after " + x + " months:", CurrentDate);

我认为,它应该自动处理增量到适当的年份和模式到适当的月份。


查看完整回答
反对 回复 2019-07-02
?
慕容708150

TA贡献1831条经验 获得超4个赞

该函数处理边缘情况,速度快:

function addMonthsUTC (date, count) {
  if (date && count) {
    var m, d = (date = new Date(+date)).getUTCDate()

    date.setUTCMonth(date.getUTCMonth() + count, 1)
    m = date.getUTCMonth()
    date.setUTCDate(d)
    if (date.getUTCMonth() !== m) date.setUTCDate(0)
  }
  return date}

测试:

> d = new Date('2016-01-31T00:00:00Z');Sat Jan 30 2016 18:00:00 GMT-0600 (CST)> d = addMonthsUTC(d, 1);
Sun Feb 28 2016 18:00:00 GMT-0600 (CST)> d = addMonthsUTC(d, 1);Mon Mar 28 2016 18:00:00 GMT-0600 (CST)>
 d.toISOString()"2016-03-29T00:00:00.000Z"

更新非协调世界时的日期:(作者:A.Hatchkins)

function addMonths (date, count) {
  if (date && count) {
    var m, d = (date = new Date(+date)).getDate()

    date.setMonth(date.getMonth() + count, 1)
    m = date.getMonth()
    date.setDate(d)
    if (date.getMonth() !== m) date.setDate(0)
  }
  return date}

测试:

> d = new Date(2016,0,31);Sun Jan 31 2016 00:00:00 GMT-0600 (CST)> d = addMonths(d, 1);Mon Feb 29 2016 00:00:00 GMT-0600 (CST)> d
 = addMonths(d, 1);Tue Mar 29 2016 00:00:00 GMT-0600 (CST)> d.toISOString()"2016-03-29T06:00:00.000Z"


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 461 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号