具體代碼:
var str = '2015-9-22 13:8:0';
function DateFormat(str){
var reg = /^(\d{4})[-/](\d{1,2})[-/](\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})$/g;
var arr = [];
str.replace(reg,function(){
arr = [].slice.call(arguments);
//類數(shù)組對(duì)象轉(zhuǎn)換成數(shù)組對(duì)象才可以用slice方法
arr = arr.slice(1,7);
});
var resStr = "{0}年{1}月{2}日 {3}時(shí){4}分{5}秒";//聲明格式化結(jié)果的字符串
resStr = resStr.replace(/{(\d)+}/g,function(){
var num = arguments[1];//因?yàn)橛行》纸M所以arguments[1]是 0 1 2 3 4 5 每次小分組捕獲的內(nèi)容
if(arr[num].length == 1) arr[num] = "0"+arr[num];//做判斷補(bǔ)0
return arr[num];
})
return resStr;//返回結(jié)果
}
console.log(DateFormat(str))
傳統(tǒng)方法
方法1.用字符串分割 split 然后去各種拼接
方法2.用日期函數(shù) new Date()去轉(zhuǎn)化 然后調(diào)用日期對(duì)象的各種方法最后去拼接。
上面的方法是利用正則:
1.正則的捕獲 replace 方法
2.大正則,小正則
3.()正則分組
4.arguments 類數(shù)組對(duì)象
5.用replace的時(shí)候有分組和沒有分組的情況 agruments[1]是不一樣的。
6.argumetns類數(shù)組對(duì)象轉(zhuǎn)換成數(shù)組對(duì)象的方法 call
補(bǔ)充:
1.通過這個(gè)方法我們就可以改變r(jià)eg 和 resStr來改變我們想要的結(jié)果
2.可以把這個(gè)reg寫的兼容性更多一些,支持一些多的格式。
3.可以在String這個(gè)構(gòu)造類的原型上擴(kuò)充方法,使得所有的字符串都可以用這個(gè)方法。
4.可以把resStr當(dāng)做形參 傳入需要的格式