简要说明
- 首先这是一个最简单的实现,并不严谨,但能说明问题,将日期格式化的核心思想体现出来,这是重点;
- 其次,这只是实现日期格式化的一种方式,并不是唯一方式,这种方式相对比较简单,仅供参考;
实现原理
- 通过Date对象的相关方法获取到年月日时分秒等数据,再定义格式化的键比如:年对
y
,月对应M
等,生成一个键值对象;
- 最为核心的就是正则匹配了,将格式化字符串进行正则匹配替换即可,关于正则的使用那是一门大学问,需要多点时间去吭;
- 以下是一个简单的示例代码,可根据需要完善。
示例代码
function (date, fmt = 'yyyy-MM-dd') {
let map = {
'y': date.getFullYear(),
'M': date.getMonth() + 1,
'd': date.getDate()
};
return fmt.replace(/([yMd])+/g, function (match, key) {
let val = map[key].toString();
if (val.length === 1) val = '0' + val;
if (key === 'y') {
val = val.substr(4 - match.length);
} else {
val = val.substr(2 - match.length);
}
return val;
})
}