JS 格式化时间的方法

2,587 阅读2分钟

开发前端避免不了的要接触到时间,那么对时间的处理就是必然的,在整理本文之前,我都是去网上找各种方法,每次都要浪费一写时间,影响自己的开发效率。现在我通过下边的方法简单的去处理时间,得到我需要的结果。

//date 1:new Date()     2:日期字符串       3:日期时间字符串  4:时间戳
//type 1:格式化日期      2:格式化日期时间   3:格式化周几      4:格式化成时间戳
function formatDate(date,type) {
    date=typeof date === 'number'?String(date):date; //时间戳如果是number类型转化成string类型
    //匹配日期时间
    let matchDateTime=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/g
    //匹配日期
    let matchDate = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/g
    //匹配时间戳
    let matchTimeStamp=/[0-9]{13}|[0-9]{10}/g
    if(typeof date !== 'object'){
        if(date.match(matchDate)){
            // console.log("匹配日期")
            date=new Date(Date.parse(date.replace(/-/g, "/")))
        }else if(date.match(matchDateTime)){
            // console.log("匹配日期时间")
            date = date.replace(/-/g,'/');
            date =  new Date(date);
        }else if(date.match(matchTimeStamp)) {
            // console.log("匹配时间戳")
            date=new Date(Number(date));
        }
    }
    let result=null;
    switch (type) {
        case 1:
            result=formatdate(date,1);
            break;
        case 2:
            result=formatdate(date,2);
            break;
        case 3:
            result=formatweek(date);
            break;
        case 4:
            result=formattimestamp(date);
            break;
    }
    //格式化日期/日期时间:yyyy-MM-dd/yyyy-MM-dd HH:mm:ss
    function formatdate(date,type) {
        let year = date.getFullYear();
        let month = addzero(date.getMonth() + 1);
        let weekday = addzero(date.getDate());
        let hour = addzero(date.getHours());
        let minute = addzero(date.getMinutes());
        let second = addzero(date.getSeconds());
        function addzero(value) {
            if(value<10){
                value="0"+value;
            }
            return value
        }
        if(type==1){
            return (year + "-" + month + "-" + weekday);
        }else{
            return (year + "-" + month + "-" + weekday+" "+hour+":"+minute+":"+second);
        }
    }
    //格式化周几
    function formatweek(date) {
        let week;
        if (date.getDay() == 0) week = "星期日"
        if (date.getDay() == 1) week = "星期一"
        if (date.getDay() == 2) week = "星期二"
        if (date.getDay() == 3) week = "星期三"
        if (date.getDay() == 4) week = "星期四"
        if (date.getDay() == 5) week = "星期五"
        if (date.getDay() == 6) week = "星期六"
        return week;
    }
    //格式化时间戳
    function formattimestamp(date) {
        let timestamp=date.getTime();
        return timestamp
    }
    return result
}
let a=formatDate(1572249452316,1);
let b=formatDate('1572249452316',1);
let c=formatDate('2017-02-08 12:08:33',4);
let d=formatDate(new Date(),2);
let e=formatDate("2017-02-08",3);
console.log(a+"\n"+b+"\n"+c+"\n"+d+"\n"+e)

结果:
2019-10-28
2019-10-28
1486526913000
2019-10-28 17:01:59
星期三

总结:第一次写文章并且发布,炒鸡紧张。由于笔者能力有限,如有错误请指正。