主要讲解一下封装思想, 支持传入GMT格式:Wed Feb 01 2023 21:29:23 GMT+0800 (中国标准时间) 、时间戳格式。自定义传入不同的format格式类型,进行自动格式化,代码可以直接拿到项目中用,毕竟一个项目中有很多地方会用到,还是很简单的

首先,温习一下时间的一些方法

      const date = new Date()            // Wed Feb 01 2023 21:29:23 GMT+0800 (中国标准时间) 
      date.getYear();                    // 获取当前年份(2位)
      date.getFullYear();                // 获取完整的年份(4位,1970-至今)
      date.getMonth();                   // 获取当前月份(0-11,0代表1月)
      date.getDate();                    // 获取当前日(1-31)
      date.getDay();                     // 获取当前星期(0-6,0代表星期天)
      date.getTime();                    // 获取当前时间(从1970.1.1开始的毫秒数)  
      date.getHours();                   // 获取当前小时数(0-23)
      date.getMinutes();                 // 获取当前分钟数(0-59)
      date.getSeconds();                 // 获取当前秒数(0-59)
      date.getMilliseconds();            // 获取当前毫秒数(0-999)
      date.getTim();                     // 获取当前时间戳
      date.toLocaleDateString();         //(输出结果:2023/2/1)获取当前日期
      date.toLocaleTimeString();         // (输出结果:17:40:28) 获取当前时间
      date.toLocaleString();             //(输出结果:2023/2/1 17:40:12)获取日期与时间

代码如下: 

 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])
        }
        console.log(formatDate(Date.now(), 'YYYY-M-D'));
        console.log(formatDate(new Date(), 'YYYY-MM-DD hh:mm:ss'));

 如果对replace方法第二个参数不熟悉的同学可以查看replace()方法第二个参数为函数的情况_山楂树の的博客-CSDN博客

更多推荐