代码之家  ›  专栏  ›  技术社区  ›  Aroon

在两次约会之间的几个月里,Moment.js没有像我预期的那样工作

  •  0
  • Aroon  · 技术社区  · 7 年前

    我想在两个日期之间得到月份清单。开始和结束日期我从一个数组中获取。我曾经 moment.js

        var Start = moment(new Date(data2[0])).format("YYYY-MM-DD")
    var End = moment(new Date(data2[data2.length-1])).format("YYYY-MM-DD")
    
    console.log(Start) //It prints 2018-08-08
    console.log(End)   //It prints 2019-01-04
    
    var dateStart = moment(Start)
    var dateEnd = moment(End)
    var timeValues = [];
    
    
    while (moment(dateEnd) > moment(dateStart) || moment(dateStart).format('MM') === moment(dateEnd).format('MM')) {
       timeValues.push(moment(dateStart).format('YYYY-MM'));
       moment(dateStart).add(1,'month');
    }
    
    alert (timeValues)
    

    这个密码是从 here

    我得到的错误是

    TypeError: dateStart.format is not a function
    

    安慰 console.log

    1 回复  |  直到 7 年前
        1
  •  0
  •   JuanDM    7 年前

    .format("DD/MM/YYYY"); 一串 .

    字符串没有 format 与错误消息状态相同。

                                    v -- error here
    var dateStart = moment(data2[0]).format("DD/MM/YYYY");
    

    String ,您要使用 格式 Date 对象

    试试这样(假设那样) data2[data2.length-1] data2[0] 有效日期):

     var dateStart = moment(new Date(data2[0]));
     var dateEnd = moment(new Date(data2[data2.length-1]));
    

    我已经做了一个决定 live example 用密码笔检查一下。


    尝试使用此代码

    var dateStart = moment("2018-08-08").format("DD/MM/YYYY"); //#08/08/2018
    var dateEnd = moment("2019-04-01").format("DD/MM/YYYY"); //#01/04/2019
    
    var timeValues = [];
    dateEndObj = moment(dateEnd);
    dateStartObj = moment(dateStart);
    
    while (dateEndObj > dateStartObj || dateStartObj.format('MM') === dateEndObj.format('MM')) {
       timeValues.push(dateStartObj.format('YYYY-MM'));
       dateStartObj.add(1,'month');
    }
    
    alert (timeValues);
    
    推荐文章