【问题标题】:momentJS date string add 5 daysmomentJS 日期字符串添加 5 天
【发布时间】:2014-04-28 03:12:46
【问题描述】:

我有一个开始日期字符串“20.03.2014”,我想使用 moment.js 将其添加 5 天,但我没有在警报窗口中获得新日期“25.03.2014”。

这里是我的 javascript 代码:

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add("DD-MM-YYYY", 5);

alert(new_date);

这里是我的 jsfiddle:http://jsfiddle.net/jbgUt/1/

我该如何解决这个问题?

我喜欢这种字符串格式“25.03.2014”

希望有人可以帮助我。

【问题讨论】:

    标签: javascript momentjs add days


    【解决方案1】:

    如果我们要使用当前日期或当前日期:

    var new_date = moment(moment(), "MM-DD-YYYY").add(7, 'days')
    alert(new_date);
    
    

    【讨论】:

      【解决方案2】:

      如果在向函数添加 X 时间后运行时出现格式问题,请尝试以下格式:

      startDate = moment(startDate).add(1, "days").format("YYYY-MM-DD");

      代替:

      startDate = moment(startDate, "YYYY-MM-DD").add(1, "days");

      最后一个版本将时间附加到返回的数据中,而 format 方法则没有,而是直接返回 YYYY-MM-DD。

      【讨论】:

        【解决方案3】:
        moment(moment('2015/04/09 16:00:00').add(7, 'd').format('YYYY/MM/DD HH:mm:ss'))
        

        必须格式化,然后再转换为时刻。

        【讨论】:

        • 你为我节省了很多时间:)
        【解决方案4】:

        更新:

        startdate = "20.03.2014";
        var new_date = moment(startdate, "DD-MM-YYYY").add(5,'days');
        
        alert(new_date)
        

        【讨论】:

          【解决方案5】:
          var end_date = moment(start_date).clone().add(5, 'days');
          

          【讨论】:

          • clone() 在这里真正有帮助
          • 感谢您拯救了我的一天! clone() 非常重要,因为 add() 会像 doc 所说的那样改变原始时刻。
          【解决方案6】:

          更新日期:2016 年 1 月 19 日

          截至 2.8.4 时刻 - 使用 .add(5, 'd')(或 .add(5, 'days'))而不是 .add('d', 5)

          var new_date = moment(startdate, "DD-MM-YYYY").add(5, 'days');
          

          感谢@Bala 提供的信息。

          更新日期:2014 年 3 月 21 日

          这是获得该格式所必须做的。

          Here's an updated fiddle

          startdate = "20.03.2014";
          var new_date = moment(startdate, "DD-MM-YYYY").add('days', 5);
          
          var day = new_date.format('DD');
          var month = new_date.format('MM');
          var year = new_date.format('YYYY');
          
          alert(day + '.' + month + '.' + year);
          

          原文:2014 年 3 月 20 日

          你没有告诉它如何/添加什么单位。使用 -

           var new_date = moment(startdate, "DD-MM-YYYY").add('days', 5);
          

          【讨论】:

          • 我想在警报窗口中看到这种格式“25.03.2014”我该如何实现呢?
          • 从 moment-2.8.4 开始,我可以看到带有 add('days',5) 的已弃用消息。请改用 add(5,'days')。
          • 正确的语法:moment().add(5, 'days').format("D/M/YYYY") 你可以看看这里:momentjs.com/docs/#/manipulating/add
          • @Bala,如果只有一天可以添加,我们可以使用 add(1,'day') 吗?
          • @Ashiq,根据文档,它应该是“天”或“d”。 (虽然 'day' 会以 d 开头,但不应该使用)
          【解决方案7】:
          1. https://momentjs.com/downloads/moment-with-locales.js添加到您的html页面
          2. var todayDate = moment().format('DD-MM-YYYY');//to get today date 06/03/2018 if you want to add extra day to your current date 那么
          3. var dueDate = moment().add(15,'days').format('DD-MM-YYYY')// to add 15 days to current date..

          第 2 点和第 3 点正在您的 jquery 代码中使用...

          【讨论】:

            【解决方案8】:

            您可以添加不同格式的日期:

            // Normal adding
            moment().add(7, 'days');
            
            // Short Hand
            moment().add(7, 'd');
            
            // Literal Object    
            moment().add({days:7, months:1});
            

            在 Moment.js 文档中查看更多信息:https://momentjs.com/docs/#/manipulating/add/

            【讨论】:

              【解决方案9】:

              要获得一个实际的工作示例,它会返回预期的结果:

              var startdate = "20.03.2014";
              var new_date = moment(startdate, "DD.MM.YYYY");
              var thing = new_date.add(5, 'days').format('DD/MM/YYYY');
              window.console.log(thing)
              

              【讨论】:

                【解决方案10】:

                你可以用几行代码减少他们所说的内容:

                var nowPlusOneDay = moment().add('days', 1);
                var nowPlusOneDayStr = nowPlusOneDay.format('YYYY-MM-DD');
                
                alert('nowPlusOneDay Without Format(Unix Date):'+nowPlusOneDay);
                alert('nowPlusOneDay Formatted(String):'+nowPlusOneDayStr);
                

                【讨论】:

                  【解决方案11】:

                  函数 add() 返回旧日期,但更改原始日期:)

                  startdate = "20.03.2014";
                  var new_date = moment(startdate, "DD.MM.YYYY");
                  new_date.add(5, 'days');
                  alert(new_date);
                  

                  【讨论】:

                  • 是的,这很奇怪。在控制台中检查moment(startdate).add(5, 'days') 时,您会得到Moment {_isAMomentObject: true, _i: "[the original date]",},我确信add 方法不起作用。花了几分钟后,我意识到这个方法是有效的,因为如果你打开对象你会得到Moment _d : [The date with the addition] _f : "YYYY-MM-DDTHH:mm:ss" _i : [The original date]...日期实际上已经改变了(你会用moment(startdate).add(5, 'days').format('YYYYMMDD')得到正确的结果),但令人困惑的是日期似乎没有改变。 :-|
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多