时间字符串格式化及封装
2019-10-22 本文已影响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