const REGEX_FORMAT = new RegExp("([^\]]+)|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS", "gi")
const formatDate = (value, format = 'YYYY-MM-DD') => {
if (!value) return ''
// ios 和 mac 系统中,带横杆的字符串日期是格式不了的,这里做一下判断处理
if (typeof value === "string" && new Date(value).toString() === "Invalid Date") {
value = value.replace(/-/g, "/");
}
const date = new Date(value)
const year = date.getFullYear()
const month = date.getMonth()
const days = date.getDate()
const day = date.getDay()
const hours = date.getHours()
const minutes = date.getMinutes()
const seconds = date.getSeconds()
const milliseconds = date.getMilliseconds()
const matches = {
YY: String(year).slice(-2),
yy: String(year).slice(-2),
YYYY: year,
yyyy: year,
M: month + 1,
MM: `${month + 1}`.padStart(2, '0'),
D: String(days),
DD: `${days}`.padStart(2, '0'),
H: String(hours),
HH: `${hours}`.padStart(2, '0'),
h: `${hours % 12 || 12}`.padStart(1, '0'),
hh: `${hours % 12 || 12}`.padStart(2, '0'),
m: String(minutes),
mm: `${minutes}`.padStart(2, '0'),
s: String(seconds),
ss: `${seconds}`.padStart(2, '0'),
SSS: `${milliseconds}`.padStart(3, '0'),
d: day,
}
return format.replace(REGEX_FORMAT, (match, $1) => $1 || matches[match])
}
module.exports = { formatDate }
JS - 日期格式化封装
最新推荐文章于 2024-07-22 18:28:09 发布