最近開發的軟體中需要用到日誌功能,其中有乙個重要功能是顯示日期和時間。於是網上搜了一把,搜到大量的日期格式化函式,不過比較了下,感覺**都不夠優雅,而且效能都不給力。
對線上一些**進行了評測,以下是一些結論和優化**。
測試**如下,在同以瀏覽器中,分別對格式化函式進行50萬次計算:
var start = newdate().gettime();
var date = new
date();
for(var i = 0;i<500000;i++)
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) ;
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
date()).pattern("yyyy-mm-dd hh:mm:ss.s")==> 2006-07-02 08:09:04.423
* (new date()).pattern("yyyy-mm-dd e hh:mm:ss") ==> 2009-03-10 二 20:09:04
* (new date()).pattern("yyyy-mm-dd ee hh:mm:ss") ==> 2009-03-10 周二 08:09:04
* (new date()).pattern("yyyy-mm-dd eee hh:mm:ss") ==> 2009-03-10 星期二 08:09:04
* (new date()).pattern("yyyy-m-d h:m:s.s") ==> 2006-7-2 8:9:4.18 */
date.prototype.format2=function
(fmt) ;
var week =;
if(/(y+)/.test(fmt))
if(/(e+)/.test(fmt))
for(var k in
o)
}
return
fmt;
}
測試三次:
成績1:7334毫秒成績2:7497毫秒
成績3:7498毫秒
平均:7443毫秒
本著完美主義的態度,自己重新造了個更好的輪子,分享給需要的同學們,**如下:
/** * 對日期進行格式化,
* @param date 要格式化的日期
* @param format 進行格式化的模式字串
* 支援的模式字母有:
* y:年,
* m:年中的月份(1-12),
* d:月份中的天(1-31),
* h:小時(0-23),
* m:分(0-59),
* s:秒(0-59),
* s:毫秒(0-999),
* q:季度(1-4)
* @return string
* @author [email protected] */
function
dateformat(date, format)
var map =;
format = format.replace(/([ymdhmsqs])+/g, function
(all, t)
return
v; }
else
if(t === 'y')
return
all;
});return
format;
}
使用方法:
dateformat('yyyy-mm-dd hh:mm:ss');dateformat(
new date(), 'yyyy-mm-dd hh:mm:ss');
//測試三次:
成績1:2903毫秒成績2:2900毫秒
成績3:2896毫秒
平均:2899毫秒
js 日期格式化函式
對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 m...
js日期格式化函式
author ocq 對date的擴充套件,將 date 轉化為指定格式的string 月 m 日 d 12小時 h 24小時 h 分 m 秒 s 周 e 季度 q 可以用 1 2 個佔位符 年 y 可以用 1 4 個佔位符,毫秒 s 只能用 1 個佔位符 是 1 3 位的數字 eg new dat...
js日期格式化
日期格式化 使用方法1 var now new date var nowstr util.dateformat new date yyyy mm dd hh mm ss 使用方法2 var testdate new date var teststr util.dateformat new date ...