之前写了一篇关于自定义日期格式的文章,发现如果使用正则逻辑或来写可以更加的方便实现,而且简单易读,今天来分享一下
正则逻辑或
- | 是一个元字符,用于表示逻辑“或”的关系。
- 它允许你匹配多个模式中的任意一个。例如,正则表达式 abc|d 可以匹配字符串 "abc" 或 "abd"。
/**
* 将日期格式化为指定的字符串格式。
*
* @param {Date | string | number} date - 要格式化的日期,可以是Date对象、日期字符串或时间戳。
* @param {string} [format='YYYY-MM-DD hh:mm:ss'] - 目标日期格式字符串,默认为'YYYY-MM-DD hh:mm:ss'。
* @returns {string} 格式化后的日期字符串。
*/
function formatDate(date, format = 'YYYY-MM-DD hh:mm:ss') {
date = new Date(date||Date.now());
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const hours = date.getHours();
const minutes = date.getMinutes();
const seconds = date.getSeconds();
let dateObj = {
YYYY:year,
YY:year.toString().slice(-2),
MM:String(month).padStart(2, '0'),
M:month,
DD:String(day).padStart(2, '0'),
D:day,
hh:String(hours).padStart(2, '0'),
h:hours,
mm:String(minutes).padStart(2, '0'),
m:minutes,
ss:String(seconds).padStart(2, '0'),
s:seconds,
}
// 使用正则逻辑或替换格式字符串中的占位符
return format.replace(/YYYY|YY|MM|M|DD|D|hh|h|mm|m|ss|s/g, (match) => {
return dateObj[match] || match;
});
}
Tags:date_format