不记得多久之前了,看到过一位大神在论坛的回复,是一段实现输出任意格式时间的功能模块,觉得很不错的,稍微整理了一下,以一个插件的形式存在,分享一下吧。代码很简单:调用zyltimeformat()方法即可,该方法支持两个参量,具体参量的要求,请查看函数模块的注释。
我这里只写了计算,并没有加入时间的计算,如果你需要时间的那块,那就自己再加一段代码吧。
如果您发现代码有问题,或者是某些测试数据出了问题,欢迎您的指正,让大家共同进步。
jquery代码
//jquery输出任意格式的时间
var zyljq = $.noConflict();
zyljq.fn.extend({
zyltimeformat:function(time, format){
//time请按照时间的格式输入,不支持智能区分时间
//请确定输入dddd/dd/dd,其中d为合法的数字,分隔符可以随意。
//不输入则会按照当前的日期计算结果
//format请按照下列格式输入yyyy|mm|dd,字母不能变
//可以把中间的分隔符变成你想要的分隔符。
if(time != ""){
var t = new Date(time);
}else{
var t = new Date();
}
var tf = function(i){return (i < 10 ? '0' : '') + i};
return format.replace(/yyyy|mm|dd/g, function(a){
switch(a){
case 'yyyy':
return tf(t.getFullYear());
break;
case 'mm':
return tf(t.getMonth() + 1);
break;
case 'dd':
return tf(t.getDate());
break;
}
});
}
});
例如
var aa = zyljq().zylformat("2013!11!01",'yyyy-mm-dd');
document.write(aa); //2013-11-01
aa = zyljq().zylformat("2013!11!01",'yyyy/mm/dd');
document.write(aa); //2013/11/01
注:修改于2013.12.12
在safari浏览器中,new Date(time)中,time的写法不支持2013!11!01这种格式的输入,在safari中,time在这个写法时的分隔符只能是" / ",所以只能以2013/11/01的格式输入,这样的话,就显得过于单一了,所以可以在time有输入的时候,进行一个简单的判断。
if(time != ""){
//safari下,time必须是以“/”作为间隔符才可以。
//首先对time做处理。
time = time.replace(/[^\d]+/g,"/");
var t = new Date(time);
}else{
var t = new Date();
}
当然,这个判断只是最简单把非数字,变成“ / ”处理,并没有做合法性的验证,就假设使用者知道输入格式吧。
这里只是为了,注意在safari浏览器下的这个兼容问题。
我这里只写了计算,并没有加入时间的计算,如果你需要时间的那块,那就自己再加一段代码吧。
如果您发现代码有问题,或者是某些测试数据出了问题,欢迎您的指正,让大家共同进步。