天天看点

js中常用的操作时间的一些方法

       前段时间公司项目中有很多关于时间格式的问题,很多都是很常见的,所有我把很多格式设置封装成很多方法,以便以后需要的时候直接调用。

       1.前端post请求的时候传入的时间参数格式转换方法

function formatDate(date, flag) {

    var y = date.getFullYear();

    var m = date.getMonth() + 1;

    var HH24 = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();

    var Mi = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();

    var ss = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();

    m = m < 10 ? '0' + m : m;

    var d = date.getDate();

    d = d < 10 ? ('0' + d) : d;

    if(flag) {

        return y + '-' + m + '-' + d + 'T00:00:00.0000000+08:00';

    } else {

        return y + '-' + m + '-' + d + 'T' + HH24 + ':' + Mi + ':' + ss + '.0000000+08:00';

    }

};

     2.前端get请求传入时间参数格式转换方法

function formatDate1(date, flag) {

    var y = date.getFullYear();

    var m = date.getMonth() + 1;

    var HH24 = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();

    var Mi = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();

    var ss = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();

    m = m < 10 ? '0' + m : m;

    var d = date.getDate();

    d = d < 10 ? ('0' + d) : d;

    if(flag) {

        return y + '-' + m + '-' + d + 'T00%3A00%3A00Z';

    } else {

        return y + '-' + m + '-' + d + 'T' + HH24 + '%3A' + Mi + '%3A' + ss + 'Z';

    }

};

    3. 日期格式化,得到你想要的格式

Date.prototype.format = function(format) {

    var o = {

        "M+": this.getMonth() + 1, //month

        "d+": this.getDate(), //day

        "h+": this.getHours(), //hour

        "m+": this.getMinutes(), //minute

        "s+": this.getSeconds(), //second

        "q+": Math.floor((this.getMonth() + 3) / 3), //quarter

        "S": this.getMilliseconds() //millisecond

    }

    if(/(y+)/.test(format)) format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));

    for(var k in o)

        if(new RegExp("(" + k + ")").test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));

    return format;

}

这个方法写在原型上,可以在时间后面直接调用,如new Date().format('MM-dd'),得到的就是只有月和日的日期格式。

        4.计算当前时间的前后一段时间的时间点,如两天前、两月后

function getDateTimeByCount(AddCount, type, isZero,date) {

    var dd = new Date();

    if(date){

        dd = date;

    }

    switch(type) {

        case 'hour':

            dd.setHours(dd.getHours() + AddCount); 

            break;

        case 'day':

            dd.setDate(dd.getDate() + AddCount); 

            break;

        case 'month':

            dd.setMonth(dd.getMonth() + AddCount); 

            break;

        case 'year':

            dd.setFullYear(dd.getFullYear() + AddCount); 

            break;

        default:

            dd.setDate(dd.getDate() + AddCount); //获取AddDayCount天后的日期

    }

    var y = dd.getFullYear();

    var m = dd.getMonth() + 1;

    var HH24 = dd.getHours() < 10 ? '0' + dd.getHours() : dd.getHours();

    var Mi = dd.getMinutes() < 10 ? '0' + dd.getMinutes() : dd.getMinutes();

    var ss = dd.getSeconds() < 10 ? '0' + dd.getSeconds() : dd.getSeconds();

    m = m < 10 ? '0' + m : m;

    var d = dd.getDate();

    d = d < 10 ? ('0' + d) : d;

    if(isZero) {

        var str = y + '-' + m + '-' + d + ' ' + '00:00:00';

    } else {

        var str = y + '-' + m + '-' + d + ' ' + HH24 + ':' + Mi + ':' + ss;

    }

    return str;

}

5.把秒数转换成时分秒

function formatSeconds(value) {

    var theTime = parseInt(value); // 秒 

    var theTime1 = 0; // 分 

    var theTime2 = 0; // 小时 

    // alert(theTime); 

    if(theTime > 60) {

        theTime1 = parseInt(theTime / 60);

        theTime = parseInt(theTime % 60);

        // alert(theTime1+"-"+theTime); 

        if(theTime1 > 60) {

            theTime2 = parseInt(theTime1 / 60);

            theTime1 = parseInt(theTime1 % 60);

        }

    }

    var result = "" + parseInt(theTime) + "s";

    if(theTime1 > 0) {

        result = "" + parseInt(theTime1) + "m" + result;

    }

    if(theTime2 > 0) {

        result = "" + parseInt(theTime2) + "h" + result;

    }

    return result;

}

6.获取指定时间段内的所有日期 

function getTimeAllDate(begin, end) {

         var arr = [];

        var ab = begin.split("-");

        var ae = end.split("-");

        var db = new Date();

        db.setUTCFullYear(ab[0], ab[1] - 1, ab[2]);

        var de = new Date();

        de.setUTCFullYear(ae[0], ae[1] - 1, ae[2]);

        var unixDb = db.getTime();

        var unixDe = de.getTime();

        for (var k = unixDb; k <= unixDe;) {

            arr.push((new Date(parseInt(k))).format('MM-dd'));

            k = k + 24 * 60 * 60 * 1000;

        }

        return arr;

    }

 这个还不算全面,以后有新的需要再补全。