JS - 日期格式化封装

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 } 

你可能感兴趣的:(javascript,前端,Date,format)