知识大全 Javascript日期格式化函数性能对比

Posted

篇首语:自然界没有风风雨雨,大地就不会春华秋实。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Javascript日期格式化函数性能对比相关的知识,希望对你有一定的参考价值。

Javascript日期格式化函数性能对比  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近开发的软件中需要用到日志功能 其中有一个重要功能是显示日期和时间 于是网上搜了一把 搜到大量的日期格式化函数 不过比较了下 感觉代码都不够优雅 而且性能都不给力

  对线上一些代码进行了评测 结果如下

  测试代码如下 分别对格式化函数进行 万次计算

代码如下  

  var start = new Date() getTime();

  var date = new Date();

  for(var i = ;i< ;i++)

  date format ( yyyy MM dd hh:mm:ss );

  

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

  函数

代码如下  

  // 对Date的扩展 将 Date 转化为指定格式的String

  // 月(M) 日(d) 小时(h) 分(m) 秒(s) 季度(q) 可以用 个占位符

  // 年(y)可以用 个占位符 毫秒(S)只能用 个占位符(是 位的数字)

  // 例子

  // (new Date()) Format("yyyy MM dd hh:mm:ss S") ==> : :

  // (new Date()) Format("yyyy M d h:m:s S") ==> : :

  Date prototype format = function (fmt) //author: meizz

  var o =

  "M+": this getMonth() + //月份

  "d+": this getDate() //日

  "h+": this getHours() //小时

  "m+": this getMinutes() //分

  "s+": this getSeconds() //秒

  "q+": Math floor((this getMonth() + ) / ) //季度

  "S": this getMilliseconds() //毫秒

  ;

  if (/(y+)/ test(fmt)) fmt = fmt replace(RegExp $ (this getFullYear() + "") substr( RegExp $ length));

  for (var k in o)

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

  return fmt;

  

  

  测试三次

  成绩 毫秒

  成绩 毫秒

  成绩 毫秒

  平均 毫秒

  函数

代码如下  

  /** * 对Date的扩展 将 Date 转化为指定格式的String * 月(M) 日(d) 小时(h) 小时(H) 分(m) 秒(s) 周(E) 季度(q)

  可以用 个占位符 * 年(y)可以用 个占位符 毫秒(S)只能用 个占位符(是 位的数字) * eg: * (new

  Date()) pattern("yyyy MM dd hh:mm:ss S")==> : :

  * (new Date()) pattern("yyyy MM dd E HH:mm:ss") ==> 二 : :

  * (new Date()) pattern("yyyy MM dd EE hh:mm:ss") ==> 周二 : :

  * (new Date()) pattern("yyyy MM dd EEE hh:mm:ss") ==> 星期二 : :

  * (new Date()) pattern("yyyy M d h:m:s S") ==> : :

  */

  Date prototype format =function(fmt)

  var o =

  "M+" : this getMonth()+ //月份

  "d+" : this getDate() //日

  "h+" : this getHours()% == ? : this getHours()% //小时

  "H+" : this getHours() //小时

  "m+" : this getMinutes() //分

  "s+" : this getSeconds() //秒

  "q+" : Math floor((this getMonth()+ )/ ) //季度

  "S" : this getMilliseconds() //毫秒

  ;

  var week =

  " " : "/u e "

  " " : "/u e "

  " " : "/u e c"

  " " : "/u e "

  " " : "/u db"

  " " : "/u e "

  " " : "/u d"

  ;

  if(/(y+)/ test(fmt))

  fmt=fmt replace(RegExp $ (this getFullYear()+"") substr( RegExp $ length));

  

  if(/(E+)/ test(fmt))

  fmt=fmt replace(RegExp $ ((RegExp $ length> ) ? (RegExp $ length> ? "/u f/u f" : "/u ") : "")+week[this getDay()+""]);

  

  for(var k in o)

  if(new RegExp("("+ k +")") test(fmt))

  fmt = fmt replace(RegExp $ (RegExp $ length== ) ? (o[k]) : ((" "+ o[k]) substr((""+ o[k]) length)));

  

  

  return fmt;

  

  

  

  测试三次

  成绩 毫秒

  成绩 毫秒

  成绩 毫秒

  平均 毫秒

  本着完美主义的态度 自己重新造了个更好的轮子 分享给需要的同学们 代码如下

代码如下  

  /**

  * 对日期进行格式化

  * @param date 要格式化的日期

  * @param format 进行格式化的模式字符串

  * 支持的模式字母有

  * y:年

  * M:年中的月份( )

  * d:月份中的天( )

  * h:小时( )

  * m:分( )

  * s:秒( )

  * S:毫秒( )

  * q:季度( )

  * @return String

  * @author yanis wang@gmail

  */

  function dateFormat(date format)

  if(format === undefined)

  format = date;

  date = new Date();

  

  var map =

  "M": date getMonth() + //月份

  "d": date getDate() //日

  "h": date getHours() //小时

  "m": date getMinutes() //分

  "s": date getSeconds() //秒

  "q": Math floor((date getMonth() + ) / ) //季度

  "S": date getMilliseconds() //毫秒

  ;

  format = format replace(/([yMdhmsqS])+/g function(all t)

  var v = map[t];

  if(v !== undefined)

  if(all length > )

  v = + v;

  v = v substr(v length );

  

  return v;

  

  else if(t === y )

  return (date getFullYear() + ) substr( all length);

  

  return all;

  );

  return format;

  

  

  使用方法

  dateFormat( yyyy MM dd hh:mm:ss );

  dateFormat(new Date() yyyy MM dd hh:mm:ss );

  

  测试三次

  成绩 毫秒

  成绩 毫秒

  成绩 毫秒

  平均 毫秒

cha138/Article/program/Java/JSP/201311/20250

相关参考

知识大全 asp 格式化时间函数

  asp教程格式化时间函数  本款函数可以根据用户给定的时间日期进行年月日时分秒等只要用户给定不同的style参数就可以显示不同风格的时间日期  functionformattime(testtim

知识大全 asp中的一些日期时间函数

  本文提供vbscript时间函数的概要介绍可应对一般应用具体特殊需求可进一步搜索  date()获取日期格式  time()获取时间格式::  now()获取日期和时间格式::  d=date()

知识大全 oracle里的trunc函数

  TRUNC(fordates)  TRUNC函数为指定元素而截去的日期值  其具体的语法格式如下  TRUNC(date[fmt])  其中  date一个日期值  fmt日期格式该日期将由指定的

知识大全 JavaScript:new 一个函数和直接调用函数的区别分析

JavaScript:new一个函数和直接调用函数的区别分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 如何使用Javascript正则表达式来格式化XML内容

如何使用Javascript正则表达式来格式化XML内容  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 常用的Javascript函数

常用的Javascript函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  /********

知识大全 格式化json日期格式对象

  格式化json日期格式对象  调用toDate(timeString)  /**  *时间对象的格式化  */  Dateprototypeformat=function(format)  /* 

知识大全 javascript读写Cookie函数

javascript读写Cookie函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  日前看到

知识大全 判断Javascript 是否存在函数

判断Javascript是否存在函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  window

知识大全 使用Javascript的数学函数

使用Javascript的数学函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在JavaScri