码迷,mamicode.com
首页 > 其他好文 > 详细

时间字符串格式化

时间:2017-05-18 23:53:57      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:console   时间格式   匹配   arguments   str   字符   多个   div   nbsp   

  

  字符串为 ‘2017-5-11 10:10:00‘,正则 reg=/^(\d{4})[-/](\d{1,2})[-/](\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})$/g;

  此正则代表通过若干个分组小正则,对字符串进行匹配,从左到右进行,首先匹配4个数字,[-/]代表-或/中的任意一个,再进行第二个分组匹配,由于是月份,所以匹配1、2个数字,日也如此;字符串中间的空格,可以通过实际的空格进行匹配,如要匹配多个空格,敲入空格和+即可。

//第一,将指定格式的时间字符串中的年月日等信息存在一个数组

        var str=‘2017-5-11 10:10:00‘,reg=/^(\d{4})[-/](\d{1,2})[-/](\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})$/g,ary=[];
        str.replace(reg,function(){
            console.log(arguments) //["2017-5-11 10:10:10", "2017", "5", "11", "10", "10", "10", 0, "2017-5-11 10:10:10", callee: function, Symbol(Symbol.iterator): function]
            ary=[].slice.call(arguments);    //将arguments类数组转为数组
            ary=ary.slice(1,7);
        })
        //第二,设置目标时间格式,把数组中对应的项替换到指定的区域

        var resStr = ‘{0}年{1}月{2}日 {3}时{4}分{5}秒‘;
        

        // var ary = [‘2015‘,‘6‘,‘10‘,‘14‘,‘53‘,‘0‘];
        var reg = /{(\d+)}/g;
        resStr = resStr.replace(reg,function(){
            console.log(arguments);//["{0}", "0", 0, "{0}年{1}月{2}日 {3}时{4}分{5}秒", callee: function, Symbol(Symbol.iterator): function]

            var num = arguments[1],val = ary[num];
            val.length==1 ?val=‘0‘+val : void 0;
            console.log(val);
            return val;            //将匹配到的替换为val
        })
        console.log(resStr);
        //上面的匿名函数执行的次数,取决于正则能在字符中捕获多少次,正则在resStr中捕获6次,所以我们的匿名函数执行6次    

  结果如下:2017年05月11日 10时10分00秒

时间字符串格式化

标签:console   时间格式   匹配   arguments   str   字符   多个   div   nbsp   

原文地址:http://www.cnblogs.com/xiaoli52qd/p/6876075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!