输出自定义格式的日期

不记得多久之前了,看到过一位大神在论坛的回复,是一段实现输出任意格式时间的功能模块,觉得很不错的,稍微整理了一下,以一个插件的形式存在,分享一下吧。代码很简单:调用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浏览器下的这个兼容问题。


我这里只写了计算,并没有加入时间的计算,如果你需要时间的那块,那就自己再加一段代码吧。
如果您发现代码有问题,或者是某些测试数据出了问题,欢迎您的指正,让大家共同进步。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值