在实际项目需求中,如评论时间,上传时间等经常需要用到处理时间戳的问题,后端传给了我们一串数字的时间戳,那么如何利用正则快速的去处理它,得到我们想要的格式呢?
如后端给到的是1469281964000,需要转成成yyyy-MM-dd hh:mm格式
function formatDate(date,fmt){ //替换年,匹配到以y开头的一个或者多个字符串 //RegExp.$1 匹配到括号里的值,然后转化成字符串。然后截取字符串控制start,可能结果是2016或者16(4改为2的时候) if(/(y+)/.test(fmt)){ fmt = fmt.replace(RegExp.$1,(date.getFullYear()+'').substr(4-RegExp.$1.length)); } let o = { 'M+': date.getMonth() + 1, 'd+': date.getDate(), 'h+': date.getHours(), 'm+': date.getMinutes(), 's+': date.getSeconds() }; for( let k in o){ //遍历对象,判断是否符合格式,符合的话,就去替换fmt对应位置(匹配到的) if(new RegExp(`(${k})`).test(fmt)){ let str = o[k] + ''; fmt = fmt.replace(RegExp.$1,(RegExp.$1.length===1)?str:padLeftZero(str))//补零操作 } } return fmt;};function padLeftZero(str) { return ('00' + str).substr(str.length);}
最终我们将会得到的结果是 2016-07-23 21:52
可以把该函数单独封装成一个js文件模块,输出到其他模块中使用,需要注意的是:函数的输出直接是export 而不像一般的export default,如export function formatDate(date,fmt),并且引用时候需要需要拿花括号包起来import {formatDate} from '/date.js' 。