js如何获取时间范围内的年月,日格式化为01. 如时间范围是2017-01-12到2017-07-15
预期结果为2017-01-01 、2017-02-01 、2017-03-01 、2017-04-01 、2017-05-01 、2017-06-01 、2017-07-01 

解决方案 »

  1.   


    var sdate = '2015-01-12', edate = '2017-07-15';
    var syear = parseInt(sdate.split('-')[0], 10), smonth = parseInt(sdate.split('-')[1], 10);
    var eyear = parseInt(edate.split('-')[0], 10), emonth = parseInt(edate.split('-')[1], 10);
    var result = [];
    while((syear * 12 + smonth) <= (eyear * 12 + emonth)){
    result.push(syear + ('0' + smonth).slice(-2) + '01');
    if(++smonth > 12){
    syear++;
    smonth = 1;
    }
    }
    console.log(result.join('\n'));
      

  2.   

    题目有点不合理呀,应该返回不包括2017-01-01
        function getDate(s){
            return new Date(s.replace(/-/g,'/'));
        }
        var arr = [], startD = getDate('2017-01-12'),endD = getDate('2017-07-15');
        while(endD > startD){
            let d = startD.getDate();
            if(d === 1)arr.push(startD.toLocaleDateString());
            startD.setDate(startD.getDate() + 1);
        }
        console.log(arr);
      

  3.   

    这样修改下就可合要求:    function getDate(s){
            return new Date(s.replace(/-/g,'/'));
        }
        var arr = [], startD = getDate('2017-01-12'),endD = getDate('2017-07-15');
        while(endD > startD){
            startD.setDate(1);
            arr.push(startD.toLocaleDateString());
            startD.setMonth(startD.getMonth() + 1);
        }
        console.log(arr);