JS获取一段时间的日期(获取时间轴日期数组)

var dataUtil = ( function(){

return {
    /**
     * getXAxis()方法作用:获取开始日期和结束日期之间(包含开始日期和结束日期)的日期数组,可作为时间轴坐标等
     * @param  filters: {tab:0/1/2, startTime:开始日期, endTime:结束日期}
     * 说明: tab:取值0或1或2,分别表示日、月、年,对应的startTime和endTime的格式分别为'yyyy-MM-dd'、'yyyy-MM'、'yyyy'
     */
    getXAxis: function(filters) {
        var tab = filters.tab;
        var startTime = new Date(filters.startTime);
        var endTime = new Date(filters.endTime);
        var length = 0;   //日期跨度变量

        if( 0 == tab ) {
            length = (endTime.getTime() - startTime.getTime()) / (1000*24*60*60) + 1;
        } else if( 1 == tab ) {
            length = (endTime.getFullYear() - startTime.getFullYear()) * 12 + (endTime.getMonth() - startTime.getMonth()) + 1;
        } else {
            length = endTime.getFullYear() - startTime.getFullYear() + 1;
        }

        var xAxis = new Array(length);
        xAxis[0] = filters.startTime;
        for( var i = 1; i < length; i++ ) {
            if( 0 == tab ) {
                startTime.setDate( startTime.getDate() + 1 );
                xAxis[i] = startTime.Format("yyyy-MM-dd");
            } else if( 1 == tab ) {
                startTime.setMonth( startTime.getMonth() + 1 );
                xAxis[i] = startTime.Format("yyyy-MM");
            } else {
                startTime.setFullYear( startTime.getFullYear() + 1 );
                xAxis[i] = startTime.Format("yyyy");
            }
        }

        return xAxis;

    },
    /**
     * 根据X坐标数组生成对应的Y坐标数组
     * @param  xArr: 上面getXAxis()方法返回的X坐标(时间轴坐标)数组;   
     *  list:[{xAxis:"2017-03-01", yAxis:"200"},{xAxis:"2017-03-02", yAxis:"100"},...]  后台返回的坐标点数组,按时间升序排列
     */
    getYAxis: function(xArr, list) {
        var len = xArr.length;
        var yAxis = new Array(len);
        var j = 0; listLen = list.length;
        for( i in xArr ) {
            if( j < listLen && xArr[i]== list[j].xAxis ) {
                yAxis[i] = list[j].yAxis;
                j ++;
            } else {
                yAxis[i] = 0;
            }
        }

        return yAxis;
    }
};

})();

(上面代码为原创,下面代码来自:http://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.html,)
// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format(“yyyy-MM-dd hh:mm:ss.S”) ==> 2006-07-02 08:09:04.423
// (new Date()).Format(“yyyy-M-d h:m:s.S”) ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
“M+”: this.getMonth() + 1, //月份
“d+”: this.getDate(), //日
“h+”: this.getHours(), //小时
“m+”: this.getMinutes(), //分
“s+”: this.getSeconds(), //秒
“q+”: Math.floor((this.getMonth() + 3) / 3), //季度
“S”: this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp. 1,(this.getFullYear()+"").substr(4RegExp. 1.length));
for (var k in o)
if (new RegExp(“(” + k + “)”).test(fmt)) fmt = fmt.replace(RegExp. 1,(RegExp. 1.length == 1) ? (o[k]) : ((“00” + o[k]).substr((“” + o[k]).length)));
return fmt;
}
调用:

var time1 = new Date().Format(“yyyy-MM-dd”);
var time2 = new Date().Format(“yyyy-MM-dd HH:mm:ss”);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值