加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

通过正则表达式简化 JSON 时间格式转换操作

发布时间:2020-12-14 00:34:42 所属栏目:百科 来源:网络整理
导读:?? 通过正则表达式简化 JSON 时间格式转换操作 项目中常常遇到传出格式为 /Date(xxxxx)/ 这样的 Json 时间字符串,有时为了方便进一步处理,需要将其转换为通用的 Date 类型。转换的步骤其实很简单: 取出字符串中的整数 利用 Date构造函数,实例化即可。 如
??

通过正则表达式简化 JSON 时间格式转换操作

项目中常常遇到传出格式为 /Date(xxxxx)/ 这样的 Json 时间字符串,有时为了方便进一步处理,需要将其转换为通用的 Date 类型。转换的步骤其实很简单:

  1. 取出字符串中的整数
  2. 利用 Date构造函数,实例化即可。

如此,我们可以有以下手段来解决:

  • 通过字符串截取方式 (这是大部分人首先会想到的)
    /**
    * 1. 通过截取字符串判定 Date 类型
    * 2. 调用 2 次 replace 获取字符串中的整数 
    */ 
    function convertToDate(jsonDate){
        if(jsondate.substr(0,5) == "/Date"){
            var date = new Date(parseInt(jsondate.replace("/Date(","").replace(")/",""),10));
            return date;
        }
        return jsonDate
    }

以上代码,发生了一次字符串截取和两次替换操作。两次重复的 replace 操作,对于强迫症来说是不可接受的,是否可以减少?当然是可以的

  • 通过正则表达式可以减少替换操作次数,于是有如下代码:
    /**
    * 1. 通过截取字符串判定 Date 类型
    * 2. 通过正则 /[^0-9]+/ 减少 replace 操作次数 
    */ 
    function convertToDate(jsonDate){
        if(jsondate.substr(0,5) == "/Date"){
            var date = new Date(parseInt(jsondate.replace(/[^0-9]+/g,''),10));
            return date;
        }
        return jsonDate
    }

ok,替换函数的调用次数减少为了 1 次。既然都使用正则表达式了,字符串截取似乎也有点不能忍。于是有如下代码:

    /**
    * 1. 通过正则 /^/Date(d+)/$/ 避免字符串截取操作
    * 2. 通过正则 /[^0-9]+/ 减少 replace 操作次数 
    */ 
    function convertToDate(jsonDate){
        if(/^/Date(d+)/$/gi.test(jsonDate)){
            var date = new Date(parseInt(jsondate.replace(/[^0-9]+/g,10));
            return date;
        }
        return jsonDate
    }

这里似乎只是替换了许多字符串操作,但代码并么有明显简化相关操作,不满足啊。秉着不抛弃不放弃的原则,最后来一剂猛药:

    /**
    * 1. 通过 /^/Date((d+))/$/ 判断时间格式同时提取整数
    * 2. 摒弃字符串截取和查找替换操作
    */
    function convertToDate(jsonDate){
        var ls = /^/Date((d+))/$/gi.exec(jsonDate);
        return ls ? new Date(parseInt(ls[1],10)) : jsonDate;
    }

至此,相对原有的方法,通过正则表达得到了一个更加精简的方式。


原文地址:https://github.com/chl1860/O2EThinking/blob/master/%E9%80%9A%E8%BF%87%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%AE%80%E5%8C%96%20JSON%20%E6%97%B6%E9%97%B4%E6%A0%BC%E5%BC%8F%E8%BD%AC%E6%8D%A2%E6%93%8D%E4%BD%9C.md

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读