实现日期格式化

最近项目中使用到moment插件,但是小编还从来没有使用过,但闲来没事就研究了一下源码,就简单的写个小例子,供大家参考。
function formate(params, time) {
        const date = !!time ? new Date(time) : new Date()
        const Y = date.getFullYear().toString()
        let month = date.getMonth() + 1
        const M = (month < 10 ? '0' + month : month).toString()
        const days = date.getDate()
        const D = (days < 10 ? '0' + days : days).toString()
        const hour = date.getHours()
        const H = (hour < 10 ? '0' + hour : hour).toString()
        const mm =
          date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
        const ss =
          date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()

        let aa = ''
        switch (true) {
          case parseFloat(H) >= 5 && parseFloat(H) < 8:
            aa = '凌晨'
            break
          case parseFloat(H) >= 8 && parseFloat(H) < 12:
            aa = '上午'
            break
          case parseFloat(H) >= 12 && parseFloat(H) < 18:
            aa = '下午'
            break
          case parseFloat(H) >= 18 && parseFloat(H) < 22:
            aa = '晚上'
            break
          case (parseFloat(H) >= 22 && parseFloat(H) < 24) ||
            (parseFloat(H) >= 0 && parseFloat(H) < 5):
            aa = '半夜'
            break
        }

        return params
          .replace(/YYYY/, Y)
          .replace(/YY/, Y.slice(2))
          .replace(/MM/, M)
          .replace(/DD/, D)
          .replace(/hh/, H)
          .replace(/mm/, mm)
          .replace(/ss/, ss)
          .replace(/a/, aa)
      }

 

 @params params  日期格式
  @params time    日期

 formate("YYYY")  // 2019
  formate("MM-DD") // 11-04
  formate("YYYY-MM-DD") // 2019-11-04
 formate("YYYY/MM/DD",'2018-04-03') //2018/04/03

  

posted @ 2019-11-04 22:32  一醉数千年  阅读(213)  评论(1编辑  收藏  举报