如何用正则匹配时间格式

在实际项目需求中,如评论时间,上传时间等经常需要用到处理时间戳的问题,后端传给了我们一串数字的时间戳,那么如何利用正则快速的去处理它,得到我们想要的格式呢?

如后端给到的是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' 。

原文地址:https://www.cnblogs.com/hjj2ldq/p/7566121.html