美文网首页
时间字符串格式化及封装

时间字符串格式化及封装

作者: 追马的时间种草 | 来源:发表于2019-10-22 10:06 被阅读0次

时间字符串格式化及封装

  • 需求:“2019/9/20 15:46:39” =>“09-20 15:46”

    • 简单处理:
    let str='2019/9/20 15:46:39';
    let ary=str.split(/?:(\/| |:)/g)
    console.log(ary)// ["2019", "9", "20", "15", "46", "39"]
    let [,month,day,hours,minutes]=ary;//es6结构赋值
    let result=`${month}-${day} ${hours}:${minutes}`
     console.log(result)//9-20 15:46
    
    • 更加简单粗暴的方法(经常用到
    let str='2019/9/20 15:46:39';
    //1.获取时间字符串中的所有数字
    let ary=str.match(/\d+/g).map(item=>{
        return item<10?'0'+item:item //不足十位补零 
    })
    console.log(ary)// ["2019", "09", "20", "15", "46", "39"]
    //2.指定最后想要的时间格式,我们基于这个数组中的内容去替换即可
    let temlate='{0}年{1}月{2}日 {3}时{4}分{5}秒'; //需求:时间格式
    template=template.replace(/\{(\d)\}/g,(...arg)=>{
        console.log(arg)
        let [,index]=arg;//=>index:每一次正则匹配小分组捕获的结果(也就是那个数字)
        return ary[index]
    })
    console.log(template)//2019年09月20日 15时46分39秒
    
  • 封装上述简单粗暴的方法

    //时间字符串格式化
       String.prototype.myFormatTime=function myFormatTime(template='{0}年{1}月{2}日 {3}时{4}分{5}秒') {
            //=>this:str
            let ary=this.match(/\d+/g).map(item=>(item<10?'0'+item:item))
            return template.replace(/\{(\d)\}/g,(...arg)=>{
                let [,index]=arg;
                return ary[index]||'00'
            })
        }
        let str='2019/9/20 15:46:39'
        let str1='2019-9-20'
        console.log(str.myFormatTime())//2019年09月20日 15时46分39秒
      console.log(str.myFormatTime('{1}-{2} {3}:{4}'))//09-20 15:46
      console.log(str1.myFormatTime('{1}-{2} {3}:{4}'))//09-20 00:00
    

相关文章

网友评论

      本文标题:时间字符串格式化及封装

      本文链接:https://www.haomeiwen.com/subject/hqwmmctx.html