js日期时间格式化(年月日、时分秒、星期、季度、获取时间差、日期与时间戳转换的功能)

封装了个日期格式化的工具类
注释写的很明白

(function(window){
    window.pub = {
        // 格式化日期
        dateFormat:function(format,date){
            /*  
                * 若文档中已有命名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 星期日 第一季度
            */
            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;
        },
        // 时间差
        // 前小后大
        getTimeBetween:function(dateString1,dateString2){
            let TimeBetween = {};
            let startDate = Date.parse(dateString1);
            let endDate = Date.parse(dateString2);
            // 天数
            TimeBetween.days = (endDate - startDate)/(1*24*60*60*1000);
            // 小时
            TimeBetween.hours = TimeBetween.days * 24;
            // 分钟
            TimeBetween.mins = TimeBetween.days * 24 * 60;
            // 秒数
            TimeBetween.sec = TimeBetween.days * 24*60*60;
            return TimeBetween;
        },
        //  格式化时间差
        formatTB:function(dateString1,dateString2){
            let date = getTimeBetween(dateString1,dateString2);
            date.days = date.sec/86400;
            date.hours = date.sec%86400/3600;
            date.mins = date.sec%86400%3600/60;
            return date;
        },
        //  时间戳转换
        getTimeStamp:function(date){
            let TStamp = {};
            // 日期转时间戳
            TStamp.timeStamp = Date.parse(date);
            // 时间戳转日期 
            TStamp.dateTime = new Date(date);   //调用时可用上面的dateFormat格式化时间
            return TStamp;
        }
    }
})(window)
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值