JS关于Date函数的格式化输出

时间:2022-07-10 02:26:32

声明:本文是参考http://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.html本博主的文章,对于其中有些当时没看懂的地方进行了新怎注释,希望对初学者有帮助。


// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
// 例子: 
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 

Date.prototype.Format = function(fmt){
	var o = {
		 "M+": this.getMonth()+1,
		 "d+": this.getDate(),
		 "H+": this.getHours(),
		 "m+": this.getMinutes(),
		 "s+": this.getSeconds(),
		 "S+": this.getMilliseconds()
	};

	//因位date.getFullYear()出来的结果是number类型的,所以为了让结果变成字符串型,下面有两种方法:

	

	if(/(y+)/.test(fmt)){
		//第一种:利用字符串连接符“+”给date.getFullYear()+"",加一个空字符串便可以将number类型转换成字符串。

		fmt=fmt.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));
	}
	for(var k in o){
		if (new RegExp("(" + k +")").test(fmt)){

			//第二种:使用String()类型进行强制数据类型转换String(date.getFullYear()),这种更容易理解。

			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(String(o[k]).length)));
		}
	}	
	return fmt;
}

window.onload=function(){
	var time1 = new Date().Format("yyyy-MM-dd");
	var time2 = new Date().Format("yyyy-MM-dd HH:mm:ss"); 
	alert(time1);
	alert(time2);
	
};