zoukankan      html  css  js  c++  java
  • JavaScript实战笔记(六) 日期格式化

    我们知道,在 JavaScript 中没有日期格式化的相关接口,因此使用起来很不方便

    下面我们自己来封装一个函数,整体逻辑也很简单,就是使用正则表达式去替换

    /**
     * 格式化日期
     * @param { Date }    date    待转换日期
     * @param { String }  pattern 格式字符串
     *  %y 两位数的年份表示
     *  %Y 四位数的年份表示
     *  %m 月份
     *  %d 天数
     *  %H 24 小时制小时数
     *  %I 12 小时制小时数
     *  %M 分钟数
     *  %S 秒数
     *  %a 简化的星期名称
     *  %A 完整的星期名称
     *  %b 简化的月份名称
     *  %B 完整的月份名称
     * @param { Boolean } padding 是否要补齐
     */
    const formatDate = (date, pattern = '%Y-%m-%d %H:%M:%S', padding = true) => {
        if (!(date instanceof Date)) return ''
        const week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
        const month = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
        const paddingZero = (num, cnt, flag) => {
            if (!flag) return num
            let str = num + ''
            let len = str.length
            return (cnt <= len) ? num : Array(cnt - len + 1).join('0') + str
        }
        return pattern
            .replace(/%y/g, paddingZero(date.getFullYear() % 100, 2, padding))
            .replace(/%Y/g, paddingZero(date.getFullYear(), 4, padding))
            .replace(/%m/g, paddingZero(date.getMonth() + 1, 2, padding))
            .replace(/%d/g, paddingZero(date.getDate(), 2, padding))
            .replace(/%H/g, paddingZero(date.getHours(), 2, padding))
            .replace(/%I/g, paddingZero(date.getHours() % 12, 2, padding))
            .replace(/%M/g, paddingZero(date.getMinutes(), 2, padding))
            .replace(/%S/g, paddingZero(date.getSeconds(), 2, padding))
            .replace(/%a/g, week[date.getDay() - 1].slice(0, 3))
            .replace(/%A/g, week[date.getDay() - 1])
            .replace(/%b/g, month[date.getMonth()].slice(0, 3))
            .replace(/%B/g, month[date.getMonth()])
    }
    

    使用方法如下

    let date = new Date()
    let string = formatDate(date)
    let GMTString = formatDate(date, '%a, %d %m %Y %H:%M:%S GMT')
    console.log(string)    // 2020-06-11 21:18:30
    console.log(GMTString) // Thu, 11 06 2020 21:18:30 GMT
    

    【 阅读更多 JavaScript 系列文章,请看 JavaScript学习笔记

  • 相关阅读:
    一些有用的正则
    UNION ALL合表查询
    远程桌面连接:出现身份验证错误,要求的函数不受支持,可能是由于CredSSP加密Oracle修正的解决方法
    Ubuntu20.04安装、配置openvas
    awvs13破解安装、批量扫描脚本
    剑指05题
    时间复杂度o(1), o(n), o(logn), o(nlogn)
    Intellij IDEA 注释模板
    Explain详解
    Hibernate中get()和load()的区别
  • 原文地址:https://www.cnblogs.com/wsmrzx/p/13096202.html
Copyright © 2011-2022 走看看