HTML的时间问题

根据输入框内的时间日期,获得该日期前6天的日期;


image.png

得到该时间近一周的日期:


image.png

我原先写了得到前一天的函数:

//计算前一天,使图表地x轴动态显示
    function preDay(now){
        var l = new Array();
        if(now.indexOf("-") >= 0)
        var data = now.split("-");
        else var data = now.split("/");
        var year = data[0];
        var month = data[1];
        var day = data[2];
        var dd = new Date();
        var d = new Date(year, month, day);
        // console.log(year+"-"+month+"-"+day);
        for(var i = 6; i >= 0;i--){
        dd.setTime(d.getTime()-24*60*60*1000*i);
        var y = dd.getFullYear();
        var m = dd.getMonth();
        var d2 = dd.getDate();
        // console.log(dd+"~"+m);
        l.push(([y,m,d2].join('-')));
        }
        return l;
    }

在使用过程中发现,从输入框得到的日期是2017-5-31,但var d = new Date(year, month, day);所创建的日期是2017-6-30,而在var m = dd.getMonth();时得到的月份是5;
但是这样得到的日期就是少一个月的,如我的输入框日期为2017-02-01时,所呈现出的时间是:


image.png

解决:
在创建时减少一个月,获取月份时增加一个月;

//计算前一天,使图表地x轴动态显示
    function preDay(now){
        var l = new Array();
        if(now.indexOf("-") >= 0)
        var data = now.split("-");
        else var data = now.split("/");
        var year = data[0];
        var month = data[1];
        var day = data[2];
        var dd = new Date();
        var d = new Date(year, month-1, day);
        // console.log(year+"-"+month+"-"+day);
        for(var i = 6; i >= 0;i--){
        dd.setTime(d.getTime()-24*60*60*1000*i);
        var y = dd.getFullYear();
        var m = dd.getMonth()+1;
        var d2 = dd.getDate();
        // console.log(dd+"~"+m);
        l.push(([y,m,d2].join('-')));
        }
        return l;
    }

你可能感兴趣的:(HTML的时间问题)