JavaScript通过正则实现日期格式化

    在javascript开发中,我们会遇到日期时间格式化的问题,一般而言,默认我们都是 采用yyyy-MM-dd hh:mm:ss这样的格式,简单的做法就是获取时间的各个字段,年、月、日、时、分、秒,然后通过字符串拼接的方式组成这样的日期时间格式,当月份,日期,小时,分钟,秒数不足10的时候,前面补充0来达到这样的目的。但是一般而言,这种格式化方式比较死板,当我们更换一种格式化方式的时候,就需要重写一个函数。

     这里给出一个通过正则来实现日期格式化的例子,它的思路很巧妙,利用一个map映射,存放月、日、时、分、秒,然后依次通过字符替换的方式,将格式化表达式替换为年月日时分秒的表达式,最后还需要算上年的替换。

    测试代码如下,这个方法只需要修改格式化表达式就可以达到日期格式化目的了。

var Utils = {
	formatDate:function(time,format){
		var date = new Date(time);
		var map ={
			'M' : date.getMonth()+1,//month
			'd' : date.getDate(),//date
			'h' : date.getHours(),//hours
			'm' : date.getMinutes(),//minutes
			's' : date.getSeconds() //seconds
		};
		format = format.replace(/([yMdhms])+/g,function(all,t){
			var v = map[t];
			if(v!=undefined){
				 if(all.length>1){
					v = '0'+v;
					v = v.substr(v.length-2);
				 }
				 return v;
			}else if(t=='y'){
				return (date.getFullYear()+'').substr(4-all.length);
			}
			return all;
		});
	   return format;		   
	}
};
console.log(Utils.formatDate(new Date().getTime(),'yyyy年MM月dd日hh:mm:ss'))
console.log(Utils.formatDate(new Date().getTime(),'yyyy-MM-dd/hh:mm:ss'))
console.log(Utils.formatDate(new Date().getTime(),'yyyy-MM-dd hh:mm:ss'))

   运行结果如下:

    

发布了529 篇原创文章 · 获赞 287 · 访问量 147万+

猜你喜欢

转载自blog.csdn.net/feinifi/article/details/103396694