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

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

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

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

var Utils = {
	formatDate:function(time,format){
		var date = time||new Date();
		var map ={
			'y' : date.getFullYear(),
			'M' : date.getMonth()+1,//month
			'd' : date.getDate(),//date
			'H' : date.getHours(),//hours
			'm' : date.getMinutes(),//minutes
			's' : date.getSeconds() //seconds
		};
		for(var i in map){
			if(map.hasOwnProperty(i)){
				if(map[i]<10){
					map[i] = '0'+map[i];
				}
			}
		}
		format = format||'yyyy-MM-dd HH:mm:ss';
		var reg = new RegExp('y+|M+|d+|H+|m+|s+','g');
		var regY = new RegExp('y');
		format = format.replace(reg,function(v){
			var old = v;
			if(regY.test(v)){
				var y = ""+map['y'];
				var len = 4-v.length;
				old = y.substr(len);
			}else{
				var key = v.substr(0,1);
				old = map[key];
			}
			return old;
		});
	   return format;		   
	}
};
console.log(Utils.formatDate(new Date(),'yyyy年MM月dd日HH:mm:ss'))
console.log(Utils.formatDate(new Date(),'yyyy-MM-dd/HH:mm:ss'))
console.log(Utils.formatDate(new Date(),'yyyy/MM/dd/HH:mm:ss'))
console.log(Utils.formatDate(new Date(),'yyyyMMddHHmmss'))

   运行结果如下:

    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值