1.日期格式化
function formatDate(date, fmt) {
if (!(date instanceof Date)) {
date = new Date()
}
if (!fmt) {
fmt = 'yyyy-MM-dd HH:mm:ss'
}
let result = fmt.replace(/h/g, 'H')
let dateObj = {}
dateObj['y'] = date.getFullYear()
dateObj['M'] = date.getMonth()+1
dateObj['d'] = date.getDate()
dateObj['H'] = date.getHours()
if (fmt.indexOf('h')>0 && dateObj['H']>12) {
dateObj['H'] -= 12
}
dateObj['m'] = date.getMinutes()
dateObj['s'] = date.getSeconds()
for (let dateKey in dateObj) {
result = result.replace(new RegExp(dateKey+'+', 'g'), m => {
let dateVal = dateObj[dateKey] + ''
if (dateVal.length < 2) {
dateVal = dateVal.padStart(2, '0')
}
if (dateVal.length <= m.length) {
return dateVal
}
return dateVal.slice(dateVal.length-m.length)
})
}
return result
}
2.日期解析
function parseDate(str, fmt) {
fmt = fmt || 'yyyy-MM-dd HH:mm:ss'
fmt = fmt.replace(/h/g, 'H')
let result = ''
let obj = {y: 0, M: 1, d: 0, H: 0, m: 0, s: 0}
for (let dateKey in obj) {
let resArr = new RegExp(dateKey+'+', 'g').exec(fmt)
obj[dateKey] = Number(str.slice(resArr.index, resArr.index+resArr[0].length))
}
obj.M--
let date = new Date(obj.y, obj.M, obj.d, obj.H, obj.m, obj.s)
return date;
}
3.测试
console.log(formatDate(new Date(), 'yy-MM-dd HH:mm:ss'))
console.log(parseDate('2022-11-25 10:25:36', 'yyyy-MM-dd HH:mm:ss'))