时间字符串格式化

  利用正则在String原型上添加一个方法:把指定时间格式的字符串换成我们想要的各种格式,例如我们有时需要把“2016-12-22 03:10:00”或者“2016/12/22 03:10:00”等时间字符串换成我们想要的2016年12月22日 3时10分0秒等形式展示出来,那么利用正则以及String中的replace方法来实现是个简便而又实用的方法

代码如下
String.prototype.myFormatTime = function (){
    var reg = /^(\d{4})(?:-|\/|\.|:)(\d{1,2})(?:-|\/|\.|:)(\d{1,2})(?:\s+)(\d{1,2})(?:-|\/|\.|:)(\d{1,2})(?:-|\/|\.|:)(\d{1,2})$/g;
    var arr = [];
    this.replace(reg, function (){
        arr = ([].slice.call(arguments)).slice(1,7);
    });
    var format = arguments[0] || "{0}年{1}月{2}日 {3}:{4}:{5}";
    return format.replace(/{(\d+)}/g,function (){
        var val = arr[arguments[1]];
        return val.length === 1 ? "0" + val : val;
    });
}   
让我们来试一下这个方法
var str1 = "2016-12-22 03:29:35",str2 = "2016/12/22 3:29:35",str3 = "2016.12.22 3.29.35";
console.log(str1.myFormatTime("{0}年{1}月{2}日 {3}时{4}分{5}秒")); //这里输出的是2016年12月22日 03时29分35秒
console.log(str2.myFormatTime("{1}月{2}日 {3}时{4}分")); //这里输出的是12月22日 03时29分
console.log(str3.myFormatTime("{1}月{2}日 {3}时{4}分")); //这里输出的同样是12月22日 03时29分
需要注意的是当replace方法的第二个参数是一个函数的时候,函数中arguments这个类数组中存放了哪几项,以及如何把我们所需要的项提取到一个数组中。
this.replace(reg, function (){
        console.log(arguments);//输出arguments为["2016-12-22 03:29:35", "2016", "12", "22", "03", "29", "35", 0, "2016-12-22 03:29:35"],可以看到第2到第7项是我们所需要的,也就是索引1到索引6的项
        arr = ([].slice.call(arguments)).slice(1,7);//借用数组中的slice方法将我们需要的项复制到一个新的数组中,这里需要注意slice传两个参数时是从索引1开始到索引7但是不包含索引7,这里千万不要写成6
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值