本文参考了余生请指教.
来源:https://blog.csdn.net/qq_15769147/article/details/84617179
和 不丶懂
来源:https://www.cnblogs.com/baby-zhude/p/4126474.html
一、RegExp
RegExp 是javascript中的一个内置对象。是一个正则表达式对象。
RegExp.$1是RegExp的一个属性,其有值的前提是字符串可以与正则表达式匹配(否则为Boolean的字符串),且其值为与正则表达式里面第一个括号匹配的字符串
二、封装函数
Date.prototype.format = function(format) { // 给Date原型添加format方法
let o = {
"M+": this.getMonth() + 1, // getMonth方法,月份从0开始的
"d+": this.getDate(), // 获得天数
"H+": this.getHours(), // 获得小时,24制
"h+": this.getHours() > 12 ? this.getHours() - 12 : this.getHours(), // 获得小时,12制
"m+": this.getMinutes(), // 获得分钟
"s+": this.getSeconds(), // 获得秒数,3位数
"q+": Math.floor((this.getMonth() + 3) / 3), // 获得季度
"f+": this.getMilliseconds(), // 获得毫秒
};
if(/(y+)/.test(format)) { // 获得年份
format = format.replace(RegExp.$1, this.getFullYear() + "").substr(4 - RegExp.$1.length);
// RegExp.$1是yyyy(或者yy)的字符串
// substr方法目的为:当年份是yy时截取从2开始到最后面的字符串,这样年份就变成了2位
// 当年份是yyyy时截取从0开始到最后面的字符串,这样年份就变成了4位
}
for(let k in o) { // 获得其他的信息
if(new RegExp(`(${k})`).test(format)) { // 使用字符串模板在字符串里面解析变量
format = format.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
// (("00" + o[k]).substr(("" + o[k]).length)))的目的为给天数、小时、分钟、秒数、季度的添0,毫秒无法添0
}
}
return format; // 返回经过处理format字符串
};
let date = new Date(); // 实例化Date
console.log(date.format('yyyy/MM/dd HH:mm:ss q--f')); // 获得当前时间的指定格式
获得年份与获得其他分开写的原因是处理方式不同,字符串长度不同(yyyy,dd)
本文只用于个人学习与记录