对 meizz javascript date format 日期格式化函数的增强和改写
2012-08-13 14:27
696 查看
meizz的javascript日期格式化函数很好用
原帖请见:http://blog.csdn.net/meizz/article/details/405708
代码写得很精妙,主要使用了正则和replace,我简单地做了一些增强和改写,
主要用了replace 函数来代替RegExp.$1
增加了24小时表示法的H
原来的h变成12小时制
增加了E代表星期,当然可以再扩展
代码貌似少了一点。
replace函数的功能很强大,从下面这个简单的例程中学习一下:
stringObj.replace参数
第一个参数为正则
第二个参数可以是文本,这个很简单,也可以是function,这个就强大了。
这个function 的参数是动态的,有多少个参数呢,m+3呢,m是多少呢,是正则中左括号的个数,如果有一个左括号,那么就有1+3=4个参数
所以最少有3个参数了。
参数1:匹配的子字符串
参数2:查找中捕获的全部结果(往往和第一个相同,如果()在最外面的话)
参数3:查找中捕获的全部结果
..........:查找中捕获的全部结果
参数m+2:在 stringObj 中匹配出现的偏移量
参数m+3:stringObj 本身
这么一讲,很通俗易懂了。
更新:2012/12/13,替换混淆字符串:
var o = "sina"; //原字符串
var re = /s(.+)i(.+)n(.+)a(.+)/g; //原字符串正则
var s = "svserinfonoaction"; //混淆后的字符串
//alert(re.test(s));
var r = s.replace(re,
function(){
var t = arguments[0];
for (var i = 0; i < o.length; i++) {
t = t.replace(arguments[i + 1], "");
}
return t;
});
document.write(r);
这儿有更详细的参考:
http://www.blogjava.net/pingpang/archive/2012/08/12/385342.html
原帖请见:http://blog.csdn.net/meizz/article/details/405708
Date.prototype.format = function(format) //author: meizz { var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "q+" : Math.floor((this.getMonth()+3)/3), //quarter "S" : this.getMilliseconds() //millisecond } 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; } alert(new Date().format("yyyy-MM-dd hh:mm:ss"));
代码写得很精妙,主要使用了正则和replace,我简单地做了一些增强和改写,
主要用了replace 函数来代替RegExp.$1
增加了24小时表示法的H
原来的h变成12小时制
增加了E代表星期,当然可以再扩展
/* 字母 日期或时间元素 表示 示例 G Era 标志符 Text AD y 年 Year 1996; 96 M 年中的月份 Month July; Jul; 07 w 年中的周数 Number 27 W 月份中的周数 Number 2 D 年中的天数 Number 189 d 月份中的天数 Number 10 F 月份中的星期 Number 2 E 星期中的天数 Text Tuesday; Tue a Am/pm 标记 Text PM H 一天中的小时数(0-23) Number 0 k 一天中的小时数(1-24) Number 24 K am/pm 中的小时数(0-11) Number 0 h am/pm 中的小时数(1-12) Number 12 m 小时中的分钟数 Number 30 s 分钟中的秒数 Number 55 S 毫秒数 Number 978 z 时区 General time zone Pacific Standard Time; PST; GMT-08:00 Z 时区 RFC 822 time zone -0800 */ String.prototype.repeat = function(count, seperator) { var seperator = seperator || ''; var a = new Array(count); for (var i = 0; i < count; i++){ a[i] = this; } return a.join(seperator); } Date.prototype.format = function(style) { var o = { "y{4}|y{2}" : this.getFullYear(), //year "M{1,2}" : this.getMonth() + 1, //month "d{1,2}" : this.getDate(), //day "H{1,2}" : this.getHours(), //hour "h{1,2}" : this.getHours() % 12, //hour "m{1,2}" : this.getMinutes(), //minute "s{1,2}" : this.getSeconds(), //second "E" : this.getDay(), //day in week "q" : Math.floor((this.getMonth() + 3) / 3), //quarter "S{3}|S{1}" : this.getMilliseconds() //millisecond } for(var k in o ){ style = style.replace(new RegExp("("+ k +")"), function(m){ return ("0".repeat(m.length) + o[k]).substr(("" + o[k]).length); }) } return style; }; document.write(new Date().format('yyyy-MM-dd Qq WE h:mm:ss SSS'));
代码貌似少了一点。
replace函数的功能很强大,从下面这个简单的例程中学习一下:
String.prototype.format = function(){ var args = arguments; return this.replace(/\{(\d+)\}/g, function(m,i){ return args[i]; }); } var a = "I Love {0}, and You Love {1},Where are {0}! {4}"; alert(a.format("You","Me"));
stringObj.replace参数
第一个参数为正则
第二个参数可以是文本,这个很简单,也可以是function,这个就强大了。
这个function 的参数是动态的,有多少个参数呢,m+3呢,m是多少呢,是正则中左括号的个数,如果有一个左括号,那么就有1+3=4个参数
所以最少有3个参数了。
参数1:匹配的子字符串
参数2:查找中捕获的全部结果(往往和第一个相同,如果()在最外面的话)
参数3:查找中捕获的全部结果
..........:查找中捕获的全部结果
参数m+2:在 stringObj 中匹配出现的偏移量
参数m+3:stringObj 本身
这么一讲,很通俗易懂了。
更新:2012/12/13,替换混淆字符串:
var o = "sina"; //原字符串
var re = /s(.+)i(.+)n(.+)a(.+)/g; //原字符串正则
var s = "svserinfonoaction"; //混淆后的字符串
//alert(re.test(s));
var r = s.replace(re,
function(){
var t = arguments[0];
for (var i = 0; i < o.length; i++) {
t = t.replace(arguments[i + 1], "");
}
return t;
});
document.write(r);
这儿有更详细的参考:
http://www.blogjava.net/pingpang/archive/2012/08/12/385342.html
相关文章推荐
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化) (转)
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化) 转载
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化) (转)
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化)
- mysql 日期格式化函数之date_format()函数
- javascript Date format(js日期格式化)
- javascript Date format(js日期格式化)
- javascript中Date format(js日期格式化)方法小结
- javascript Date format(js日期格式化)