简单的时间格式化
来源于 weui 里的一段格式化代码
function format(time, reg) {
const date = typeof time === 'string' ? new Date(time) : time
const map = {}
map.yyyy = date.getFullYear()
map.yy = ('' + map.yyyy).substr(2)
map.M = date.getMonth() + 1
map.MM = (map.M < 10 ? '0' : '') + map.M
map.d = date.getDate()
map.dd = (map.d < 10 ? '0' : '') + map.d
map.H = date.getHours()
map.HH = (map.H < 10 ? '0' : '') + map.H
map.m = date.getMinutes()
map.mm = (map.m < 10 ? '0' : '') + map.m
map.s = date.getSeconds()
map.ss = (map.s < 10 ? '0' : '') + map.s
return reg.replace(/\byyyy|yy|MM|M|dd|d|HH|H|mm|m|ss|s\b/g, $1 => map[$1])
}
// 代码分析
// 1. 得到日期对象 date
// 2. 构造 map,结果如下:
const map = {
"yyyy": 2023,
"yy": "23",
"M": 8,
"MM": "08",
"d": 9,
"dd": "09",
"H": 10,
"HH": "10",
"m": 0,
"mm": "00",
"s": 4,
"ss": "04"
}
// 3. 利用 reg /\byyyy|yy|MM|M|dd|d|HH|H|mm|m|ss|s\b/g 来分离格式
// 4. replace 函数,来完成从正则中逐步取值替换的逻辑