在上次写的日期时间格式化上又增加了获取和格式化时间差,日期与时间戳转换的功能
后续可能还会封装别的工具类,代码可能不够优雅,但能用是肯定的
使用方法直接 pub.方法名(参数)
注释都写的还算清楚
(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)