萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> Javascript日期格式化函數性能對比

Javascript日期格式化函數性能對比

   最近開發的軟件中需要用到日志功能,其中有一個重要功能是顯示日期和時間。於是網上搜了一把,搜到大量的日期格式化函數,不過比較了下,感覺代碼都不夠優雅,而且性能都不給力。

  對線上一些代碼進行了評測,結果如下:

  測試代碼如下,分別對格式化函數進行50萬次計算:

代碼如下  

var start = new Date().getTime();

var date = new Date();

for(var i = 0;i<500000;i++){

date.format1('yyyy-MM-dd hh:mm:ss');

}

console.log(new Date().getTime() - start);

  函數1:

代碼如下  

// 對Date的擴展,將 Date 轉化為指定格式的String

// 月(M)、日(d)、小時(h)、分(m)、秒(s)、季度(q) 可以用 1-2 個占位符,

// 年(y)可以用 1-4 個占位符,毫秒(S)只能用 1 個占位符(是 1-3 位的數字)

// 例子:

// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423

// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18

Date.prototype.format1 = function (fmt) { //author: meizz

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(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));

for (var k in o)

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

return fmt;

}

 

  測試三次:

  成績1:6657毫秒

  成績2:6739毫秒

  成績3:6747毫秒

  平均:6714毫秒

  函數2:

代碼如下  

/** * 對Date的擴展,將 Date 轉化為指定格式的String * 月(M)、日(d)、12小時(h)、24小時(H)、分(m)、秒(s)、周(E)、季度(q)

可以用 1-2 個占位符 * 年(y)可以用 1-4 個占位符,毫秒(S)只能用 1 個占位符(是 1-3 位的數字) * eg: * (new

copyright © 萬盛學電腦網 all rights reserved