js源码实现-格式化日期

574 阅读1分钟
  • 目的:js源码实现日期格式
  • 使用场景:给定以毫秒数显示的时间,进行格式化。 在项目中使用抽离成单独的js文件,以模块的形式export导出进而 任何地方都可用,实现简单的模块化开发
   function fomatDate(date, fmt) {
     date = new Date(date)
     // 先匹配年份,年份格式可能4位,可能2位
     // 使用转化后的日期代替传入的格式
     if (/(y+)/.test(fmt)) { // 匹配年份
       // console.log(RegExp.$1)
       // Regexp.$1指的是首次匹配成功的集合
       fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
       // console.log(fmt)
     }
     
     // 匹配月、日、时、分、秒
     let o = {
       'm+': date.getMonth() + 1,
       'd+': date.getDate(),
       'h+': date.getHours(),
       'm+': date.getMinutes(),
       's+': date.getSeconds()
     }

     for (let key in o) {
       // console.log(`(${key})`)
       if (new RegExp(`(${key})`).test(fmt)) {
         let str = o[key] + ''
         fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str))
       }
     }
     return fmt
   }
   // 日期中补0
   function padLeftZero(str) {
     // 这里的写法很秒。
     // 如果str的长度为2,例如0012截取从下标第二位开始; 如果长度为1,例如004,截取就从第一位开始
     return ('00' + str).substr(str.length)
   }
   let time = 1469281964000;

   // 注意这里的格式,都是小写
   fomatDate(time, 'yyyy-mm-dd hh:mm')
   
   ```