【问题标题】:How to add some number of months to a given date using javascript [duplicate]如何使用javascript在给定日期添加一些月数[重复]
【发布时间】:2016-01-09 05:54:07
【问题描述】:

我正在尝试将月份添加到给定日期并希望输出该日期。

我正在使用此代码,但它不起作用。

    var p = '2015-10-21';
    var myDate = new Date(p);
    var result1 = myDate.addMonths(3);

我希望结果是:2016-01-21

【问题讨论】:

  • Date 对象没有名为 addMonths 的方法
  • 请检查您的浏览器控制台进行错误调试
  • .addMonths() 在 datejs 库中...

标签: javascript


【解决方案1】:

moment 库非常适合与日期相关的功能。 您可以执行加法、减法等操作。 它具有易于理解的语法。您还可以避免极端情况

如果你包含了 moment 库,你的代码可以这样重写

var p = '2015-10-21';
var myDate = moment(p, 'YYYY-MM-DD');
var result1 = myDate.add(3, 'months');
console.log (result1.format('YYYY-MM-DD'));

您可以通过以下方式了解或下载时刻:http://momentjs.com/

【讨论】:

    【解决方案2】:

    你想要getMonth/setMonth

    var p = '2015-10-21';
    var myDate = new Date(p);
    myDate.setMonth(myDate.getMonth() + 3);
    

    不用担心溢出 - Date 对象会处理它

    注意。这会覆盖 myDate,如果你想在不同的 var 中得到结果

    var p = '2015-10-21';
    var myDate = new Date(p);
    var result1 = new Date(myDate);
    result1.setMonth(result1.getMonth() + 3);
    

    正如 @JohnHascall 在 cmets 中所指出的,这在月底前后并不是万无一失的,例如,将 3 个月添加到 2015 年 11 月 30 日将导致 2016 年 3 月 1 日

    【讨论】:

    • 在月底时要小心。例如:在 11 月的最后一天加上 3 个月会得到 3 月 1 日——这可能是也可能不是您所期望的。
    • @JohnHascall 好点 - 为了完整性,我会在答案中添加警告 - 是否有任何图书馆处理这种情况,在这种情况下应该是什么结果(猜想这是一个见仁见智的问题)
    • 我认为大多数日期库会将其调整为当月的最后一天。但正如你所说,什么是“正确”是见仁见智的问题。
    【解决方案3】:

    你可以试试这个-

    <script>
       var date = new Date();
       var month = date.getMonth()+1;
       var year = date.getFullYear();
       var day = date.getDate();
    
       function addMonth(addMonth){
         var u_date,u_year,u_month;
         u_date = month + addMonth;
         if(u_date > 12){
           var div = Math.floor(u_date / 12);
           var rem = u_date % 12;
           u_year = year + div;
           u_month = month + rem;
           document.getElementById("updated_date").innerHTML = day +" "+  u_month + " " + u_year;
         }else{
            document.getElementById("updated_date").innerHTML = day +" "+ (month+addMonth) + " " + year;
      }
    }
    
    addMonth(13);
    
    
    </script>
    

    这里是html-

    <div id="updated_date"></div>
    

    【讨论】:

      猜你喜欢
      • 2020-07-26
      • 2019-07-13
      • 2012-09-29
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 2011-08-04
      • 2012-12-19
      • 1970-01-01
      相关资源
      最近更新 更多