js实用方法 — 时间格式化
对于自己平时使用的常用的方法做一个记录。
不喜欢引入别的时间处理库,然后自己动手写成自己的方法。增肌获取日期的季度
具体代码如下
/* 格式化时间日期对象、时间戳、时间字符串
** dataTime为时间日期对象、时间戳、时间字符串三者之一
** format为格式化的格式字符串
*/
function Format(dataTime, format) {
if (!dataTime) return '';
if (dataTime.constructor !== Date) { // 判断是否为 时间Date
dataTime = new Date(dataTime); // date 类型数据转成 时间字符串
}
let o = {
"M+": dataTime.getMonth() + 1, // 月份
"d+": dataTime.getDate(), // 日
"h+": dataTime.getHours(), // 小时
"m+": dataTime.getMinutes(), // 分
"s+": dataTime.getSeconds(), // 秒
"q+": Math.floor((dataTime.getMonth() + 3) / 3), // 季度
S: dataTime.getMilliseconds(), // 毫秒
};
if (/(y+)/.test(format)) {
format = format.replace(
RegExp.$1, // RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个 子匹配(以括号为标志)字符串
(dataTime.getFullYear() + "").substr(4 - RegExp.$1.length)
);
}
for (const k in o) {
if (new RegExp("(" + k + ")").test(format)) { // 对o 里面定义的数据进行匹配 赋值
format = format.replace(
RegExp.$1,
RegExp.$1.length === 1
? o[k]
: ("00" + o[k]).substr(("" + o[k]).length)
);
}
}
return format
}
调用方式
// 时间戳
this.Format("1644917973815", "yyyy-MM-dd hh:mm:ss "); // 2022-02-15 17:32:59
this.Format("1644917973815", "yyyy/MM/dd hh:mm:ss "); // 2022/02/15 17:32:59
// date类型
this.Format("Tue Feb 15 2022 18:02:30 GMT+0800 (中国标准时间)", "yyyy-MM-dd hh:mm:ss ");
// 2022-02-15 18:02:30
this.Format("Tue Feb 15 2022 18:02:30 GMT+0800 (中国标准时间)", "yyyy/MM/dd hh:mm:ss ");
// 2022/02/15 18:02:30
// 时间字符串
this.Format("2022-02-15", "yyyy-MM-dd "); // 2022-02-15
this.Format("2022-02-15", "yyyy/MM/dd "); // 2022/02/15