"2018-9-22 13:10:0" ——>"2018年09月22日 13时10分00秒"
时间字符串格式化思路:
{0}替换成2018:我们首先要获取{0},而且我们还要获取那个0,这个0相当于我们ary数组中的索引,我们要做的就是把对应索引的内容替换我们的{0}。
每一次都会把正则匹配的内容捕获到:如果没有分组,一般是三个参数;但是如果正则中有需要捕获的分组,参数的个数就不确定了,从arguments[1]开始就是对应分组捕获的内容,arguments[0]是大正则捕获的内容。
第一步:将指定格式的时间字符串中的年月日等信息存入一个数组
var str = "2018-9-22 13:10:0", reg = /^(\d{4})[-/](\d{1,2})[-/](\d{1,2})+(\d{1,2}):(\d{1,2}):(\d{1,2})$/g, ary = [];
str.replace(reg, function () {
ary = ([].slice.call(arguments)).slice(1, 7);
});
第二步:设定好我们目标时间格式,把数组中对应的项替换到指定的区域内
var resStr = "{0}年{1}月{2}日 {3}时{4}分{5}秒",
reg = /{(\d+)}/g;
resStr = resStr.replace(reg, function () {
var num = arguments[1], val = ary[num];
val.length === 1 ? val = "0" + val : void 0;
retrun val;
});
console.log(resStr);
网友评论