將時間日期格式化為yyyy-MM-dd格式程式碼例項

admin發表於2017-04-16

本章節介紹一個能夠格式化時間日期的程式碼,能夠比較靈活的實現對時間日期格式化效果。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
Date.prototype.format = function(format){
  var o={
    "M+" : this.getMonth()+1,
    "d+" : this.getDate(),
    "h+" : this.getHours(),
    "m+" : this.getMinutes(),
    "s+" : this.getSeconds(),
    "q+" : Math.floor((this.getMonth()+3)/3),
    "S" : this.getMilliseconds()
  }
  if(/(y+)/.test(format)){
    format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));
  }
  for(var k in o)if(new RegExp("("+ k +")").test(format))
  format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+ o[k]).substr((""+o[k]).length));
  return format;
}
var d=new Date();
console.log(d.format('yyyy-MM-dd'));

上面的程式碼實現了時間日期格式化效果,下面介紹一下它的實現過程。

一.程式碼註釋:

1.Date.prototype.format=function(format){},為Date物件例項新增format()方法,引數是時間日期格式。

2.var o={

  "M+" : this.getMonth()+1,

  "d+" : this.getDate(),

  "h+" : this.getHours(),

  "m+" : this.getMinutes(),

  "s+" : this.getSeconds(),

  "q+" : Math.floor((this.getMonth()+3)/3),

  "S" : this.getMilliseconds()

}

物件直接量中的屬性名稱設計的恰好可以作為正規表示式,加號可以作為正則中的重複兩次,表示匹配一次或者多次前面的字元,屬性值則是對應的時間日期值,年份沒有在此物件中是進行的單獨處理,之所以這樣是因為年份最高是4位,而其他的最高是2位。

3.if(/(y+)/.test(format)){format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));},將格式中的"y"替換為年份,當然也會根據y的數目擷取指定數目的年份字串,比如"yy",那麼返回的年份就是"14"這樣的字串。

4.for(var k in o)if(new RegExp("("+ k +")").test(format))

format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k] : ("00"+ o[k]).substr((""+o[k]).length))

上面的程式碼其實是簡化的寫法,完整的寫法如下:

for(var k in o){

  if(new RegExp("("+ k +")").test(format)){

    format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k] : ("00"+ o[k]).substr((""+o[k]).length));

  }

}

遍歷物件直接量中的每一個屬性,進行相應的操作。

if(new RegExp("("+ k +")").test(format)),這個是判斷格式字串中是否有相應的字串變數中對應的時間日期格式,比如"yyyy-MM-dd"格式字串就有"M+"和"d+"。

format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k] : ("00"+ o[k]).substr((""+o[k]).length)),此程式碼就是根據格式字串進行相應的日期格式操作。

5. return format,返回格式化後的時間日期字串。

二.相關閱讀:

1.關於Date物件相關方法可以參閱JavaScript Date物件一章節。 

2.replace()函式可以參閱正規表示式replace()一章節。

3.substr()函式可以參閱javascript substr()一章節。

4.三元運算子可以參閱三元運算子一章節。 

相關文章