在线功能预览
①日期格式化函数dateFormat():
/**
* 格式化日期时间字符串
*
* @param value 待格式化的日期时间值,支持数字、字符串和 Date 类型,默认为当前时间戳
* @param format 格式化字符串,默认为'YYYY-MM-DD HH:mm:ss',支持格式化参数:YY:年,M:月,D:日,H:时,m:分钟,s:秒,SSS:毫秒
* @returns 返回格式化后的日期时间字符串
*/
export function dateFormat(value: number | string | Date = Date.now(), format: string = 'YYYY-MM-DD HH:mm:ss'): string {
try {
let date: Date
if (typeof value === 'number' || typeof value === 'string') {
date = new Date(value)
if (isNaN(date.getTime())) {
throw new Error('Invalid date')
}
} else {
date = value
}
const padZero = (value: number, len: number = 2): string => {
// 左侧补零函数
return String(value).padStart(len, '0')
}
const replacement = (match: string) => {
switch (match) {
case 'YYYY':
return padZero(date.getFullYear())
case 'YY':
return padZero(date.getFullYear()).slice(2, 4)
case 'MM':
return padZero(date.getMonth() + 1)
case 'M':
return String(date.getMonth() + 1)
case 'DD':
return padZero(date.getDate())
case 'D':
return String(date.getDate())
case 'HH':
return padZero(date.getHours())
case 'H':
return String(date.getHours())
case 'mm':
return padZero(date.getMinutes())
case 'm':
return String(date.getMinutes())
case 'ss':
return padZero(date.getSeconds())
case 's':
return String(date.getSeconds())
case 'SSS':
return padZero(date.getMilliseconds(), 3)
default:
return match
}
}
return format.replace(/(YYYY|YY|M{1,2}|D{1,2}|H{1,2}|m{1,2}|s{1,2}|SSS)/g, replacement)
} catch (error) {
console.error('Error formatting date:', error)
return ''
}
}
②使用函数:
console.log(dateFormat(1680227496788, 'YYYY-MM-DD HH:mm:ss')) // 2023-03-31 09:51:36:788
console.log(dateFormat(new Date(), 'YYYY年MM月DD日 HH时mm分ss秒SSS毫秒')) // 2023年03月31日 09时53分41秒730毫秒