js格式化时间(自己修改并注释)

<script language="javascript">

Date.prototype.format = function(format){ 
var o = { 
"Y+" : this.getFullYear(), //year 
"M+" : this.getMonth()+1, //month 
"d+" : this.getDate(), //day 
"h+" : this.getHours(), //hour 
"m+" : this.getMinutes(), //minute 
"s+" : this.getSeconds(), //second 
"q+" : Math.floor((this.getMonth()+3)/3), //quarter 
"S" : this.getMilliseconds() //millisecond 
} 

if(/(y+)/.test(format)) { 
format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
} 

for(var k in o) {  //枚举o对象中的元素,k获得o中每个属性的名字
if(new RegExp("("+ k +")").test(format)) { //RegExpObject.test(string) 如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。
/*

原版:format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));

 //RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个 子匹配(以括号为标志)字符串,
 //stringObject.substr(start,length)  substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符
/*   例子:
   var str="Hello world!"
   document.write(str.substr(3))
   输出:lo world!
*/

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

//使用方法
var testDate = new Date(); 
var testStr = testDate.format("YY年MM月dd日hh小时mm分ss秒"); 
document.write(testStr);

</script>

经过本人的一阵摸索和网上查找,终于摸清了每一句的意思,比较详细的注释,非常适合像我一样的菜鸟学习

原文地址:https://www.cnblogs.com/csdttnk/p/2809290.html