1 /** 2 * format 扩展包 3 */ 4 Jx().$package(function(J){ 5 6 /** 7 * number 名字空间 8 * 9 * @namespace 10 * @name format 11 * @type Object 12 */ 13 J.format = J.format || {}; 14 15 /** 16 * 让日期和时间按照指定的格式显示的方法 17 * @method date 18 * @memberOf format 19 * @param {String} format 格式字符串 20 * @return {String} 返回生成的日期时间字符串 21 * 22 * @example 23 * Jx().$package(function(J){ 24 * var d = new Date(); 25 * // 以 YYYY-MM-dd hh:mm:ss 格式输出 d 的时间字符串 26 * J.format.date(d, "YYYY-MM-DD hh:mm:ss"); 27 * }; 28 * 29 */ 30 var date = function(date, formatString){ 31 /* 32 * eg:formatString="YYYY-MM-DD hh:mm:ss"; 33 */ 34 var o = { 35 "M+" : date.getMonth()+1, //month 36 "D+" : date.getDate(), //day 37 "h+" : date.getHours(), //hour 38 "m+" : date.getMinutes(), //minute 39 "s+" : date.getSeconds(), //second 40 "q+" : Math.floor((date.getMonth()+3)/3), //quarter 41 "S" : date.getMilliseconds() //millisecond 42 } 43 44 if(/(Y+)/.test(formatString)){ 45 formatString = formatString.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length)); 46 } 47 48 for(var k in o){ 49 if(new RegExp("("+ k +")").test(formatString)){ 50 formatString = formatString.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); 51 } 52 } 53 return formatString; 54 }; 55 56 /** 57 * @memberOf format 58 * @method number 59 * 格式化数字显示方式 60 * @param num 要格式化的数字 61 * @param pattern 格式 62 * @example 63 * J.format.number(12345.999,'#,##0.00'); 64 * //out: 12,34,5.99 65 * J.format.number(12345.999,'0'); 66 * //out: 12345 67 * J.format.number(1234.888,'#.0'); 68 * //out: 1234.8 69 * J.format.number(1234.888,'000000.000000'); 70 * //out: 001234.888000 71 */ 72 var number = function(num, pattern) { 73 var strarr = num ? num.toString().split('.') : ['0']; 74 var fmtarr = pattern ? pattern.split('.') : ['']; 75 var retstr = ''; 76 77 // 整数部分 78 var str = strarr[0]; 79 var fmt = fmtarr[0]; 80 var i = str.length - 1; 81 var comma = false; 82 for (var f = fmt.length - 1; f >= 0; f--) { 83 switch (fmt.substr(f, 1)) { 84 case '' : 85 if (i >= 0) 86 retstr = str.substr(i--, 1) + retstr; 87 break; 88 case '0' : 89 if (i >= 0) 90 retstr = str.substr(i--, 1) + retstr; 91 else 92 retstr = '0' + retstr; 93 break; 94 case ',' : 95 comma = true; 96 retstr = ',' + retstr; 97 break; 98 } 99 } 100 if (i >= 0) { 101 if (comma) { 102 var l = str.length; 103 for (; i >= 0; i--) { 104 retstr = str.substr(i, 1) + retstr; 105 if (i > 0 && ((l - i) % 3) == 0) 106 retstr = ',' + retstr; 107 } 108 } else 109 retstr = str.substr(0, i + 1) + retstr; 110 } 111 112 retstr = retstr + '.'; 113 // 处理小数部分 114 str = strarr.length > 1 ? strarr[1] : ''; 115 fmt = fmtarr.length > 1 ? fmtarr[1] : ''; 116 i = 0; 117 for (var f = 0; f < fmt.length; f++) { 118 switch (fmt.substr(f, 1)) { 119 case '' : 120 if (i < str.length) 121 retstr += str.substr(i++, 1); 122 break; 123 case '0' : 124 if (i < str.length) 125 retstr += str.substr(i++, 1); 126 else 127 retstr += '0'; 128 break; 129 } 130 } 131 return retstr.replace(/^,+/, '').replace(/\.$/, ''); 132 }; 133 134 J.format.date = date; 135 J.format.number = number; 136 137 }); 138