js日期时间格式化(年月日、时分秒、星期、季度)

在师兄的建议下封装了个日期格式化的工具类
注释写的很明白

(function(window){
    /*  
        * 若文档中已有命名dateFormat,可用dFormat()调用
        * 年(Y) 可用1-4个占位符
        * 月(m)、日(d)、小时(H)、分(M)、秒(S) 可用1-2个占位符
        * 星期(W) 可用1-3个占位符
        * 季度(q为阿拉伯数字,Q为中文数字)可用1或4个占位符
        *
        * let date = new Date()
        * dateFormat("YYYY-mm-dd HH:MM:SS", date)           2020-02-09 14:04:23
        * dateFormat("YYYY-mm-dd HH:MM:SS Q", date)         2020-02-09 14:09:03 一
        * dateFormat("YYYY-mm-dd HH:MM:SS WWW", date)       2020-02-09 14:45:12 星期日
        * dateFormat("YYYY-mm-dd HH:MM:SS QQQQ", date)      2020-02-09 14:09:36 第一季度
        * dateFormat("YYYY-mm-dd HH:MM:SS WWW QQQQ", date)  2020-02-09 14:46:12 星期日 第一季度
    */
    function dateFormat(format,date){
        let we = date.getDay();                                 // 星期
        let qut = Math.floor((date.getMonth()+3)/3).toString(); // 季度
        const opt = {
            "Y+":date.getFullYear().toString(),                 // 年
            "m+":(date.getMonth()+1).toString(),                // 月(月份从0开始,要+1)
            "d+":date.getDate().toString(),                     // 日
            "H+":date.getHours().toString(),                    // 时
            "M+":date.getMinutes().toString(),                  // 分
            "S+":date.getSeconds().toString(),                  // 秒
            "q+":qut, // 季度
        };
        const week = {      // 中文数字 (星期)
            "0":"日",
            "1":"一",
            "2":"二",
            "3":"三",
            "4":"四",
            "5":"五",
            "6":"六"
        };
        const quarter = {   // 中文数字(季度) 
            "1" : "一", 
            "2" : "二", 
            "3" : "三", 
            "4" : "四", 
        }; 
        if(/(W+)/.test(format)){
            format = format.replace(RegExp.$1,(RegExp.$1.length >1 ? (RegExp.$1.length >2 ? '星期'+week[we] : '周'+week[we]) : week[we]))
        };
        if (/(Q+)/.test(format)) {  
            // 输入一个Q,只输出一个中文数字,输入4个Q,则拼接上字符串 
            format = format.replace(RegExp.$1,(RegExp.$1.length == 4 ? '第'+quarter[qut]+'季度' : quarter[qut])); 
        };
        for(let k in opt){
            let r = new RegExp("("+k+")").exec(format);
            if(r){
                // 若输入的长度不为1,则前面补零
                format = format.replace(r[1],(RegExp.$1.length == 1 ? opt[k] : opt[k].padStart(RegExp.$1.length,'0')))
            }
        };
        return format;
    };
    window.dateFormat = window.dFormat =  dateFormat;
})(window)
发布了13 篇原创文章 · 获赞 4 · 访问量 4558

猜你喜欢

转载自blog.csdn.net/Xyouzi/article/details/104235304