• 使用prototype扩展的JavaScript常用函数库


      1 /**  
      2 * 检索数组元素(原型扩展或重载)  
      3 * @param {o} 被检索的元素值  
      4 * @type int  
      5 * @returns 元素索引  
      6 */   
      7 Array.prototype.contains = function(o) {   
      8   var index = -1;   
      9   for(var i=0;i<this.length;i++){if(this[i]==o){index = i;break;}}   
     10   return index;   
     11 }   
     12   
     13 /**  
     14 * 日期格式化(原型扩展或重载)  
     15 * 格式 YYYY/yyyy/YY/yy 表示年份  
     16 * MM/M 月份  
     17 * W/w 星期  
     18 * dd/DD/d/D 日期  
     19 * hh/HH/h/H 时间  
     20 * mm/m 分钟  
     21 * ss/SS/s/S 秒  
     22 * @param {formatStr} 格式模版  
     23 * @type string  
     24 * @returns 日期字符串  
     25 */   
     26 Date.prototype.format = function(formatStr){   
     27     var str = formatStr;   
     28     var Week = ['','','','','','',''];   
     29     str=str.replace(/yyyy|YYYY/,this.getFullYear());   
     30     str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));   
     31     str=str.replace(/MM/,(this.getMonth()+1)>9?(this.getMonth()+1).toString():'0' + (this.getMonth()+1));   
     32     str=str.replace(/M/g,this.getMonth());   
     33     str=str.replace(/w|W/g,Week[this.getDay()]);   
     34     str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());   
     35     str=str.replace(/d|D/g,this.getDate());   
     36     str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());   
     37     str=str.replace(/h|H/g,this.getHours());   
     38     str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());   
     39     str=str.replace(/m/g,this.getMinutes());   
     40     str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());   
     41     str=str.replace(/s|S/g,this.getSeconds());   
     42     return str;   
     43 }   
     44   
     45 /**  
     46 * 比较日期差(原型扩展或重载)  
     47 * @param {strInterval} 日期类型:'y、m、d、h、n、s、w'  
     48 * @param {dtEnd} 格式为日期型或者 有效日期格式字符串  
     49 * @type int  
     50 * @returns 比较结果  
     51 */   
     52 Date.prototype.dateDiff = function(strInterval, dtEnd) {   
     53     var dtStart = this;   
     54     if (typeof dtEnd == 'string' ) { //如果是字符串转换为日期型   
     55         dtEnd = StringToDate(dtEnd);   
     56     }   
     57     switch (strInterval) {   
     58         case 's' :return parseInt((dtEnd - dtStart) / 1000);   
     59         case 'n' :return parseInt((dtEnd - dtStart) / 60000);   
     60         case 'h' :return parseInt((dtEnd - dtStart) / 3600000);   
     61         case 'd' :return parseInt((dtEnd - dtStart) / 86400000);   
     62         case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));   
     63         case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12- (dtStart.getMonth()+1);   
     64         case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();   
     65     }   
     66 }   
     67   
     68 /**  
     69 * 日期计算(原型扩展或重载)  
     70 * @param {strInterval} 日期类型:'y、m、d、h、n、s、w'  
     71 * @param {Number} 数量  
     72 * @type Date  
     73 * @returns 计算后的日期  
     74 */   
     75 Date.prototype.dateAdd = function(strInterval, Number) {   
     76     var dtTmp = this;   
     77     switch (strInterval) {   
     78         case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));   
     79         case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));   
     80         case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));   
     81         case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));   
     82         case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7* Number));   
     83         case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
     84         case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
     85         case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
     86     }   
     87 }   
     88   
     89 /**  
     90 * 取得日期数据信息(原型扩展或重载)  
     91 * @param {interval} 日期类型:'y、m、d、h、n、s、w'  
     92 * @type int  
     93 * @returns 指定的日期部分  
     94 */   
     95 Date.prototype.datePart = function(interval){   
     96     var myDate = this;   
     97     var partStr='';   
     98     var Week = ['','','','','','',''];   
     99     switch (interval)   
    100     {   
    101         case 'y' :partStr = myDate.getFullYear();break;   
    102         case 'm' :partStr = myDate.getMonth()+1;break;   
    103         case 'd' :partStr = myDate.getDate();break;   
    104         case 'w' :partStr = Week[myDate.getDay()];break;   
    105         case 'ww' :partStr = myDate.WeekNumOfYear();break;   
    106         case 'h' :partStr = myDate.getHours();break;   
    107         case 'n' :partStr = myDate.getMinutes();break;   
    108         case 's' :partStr = myDate.getSeconds();break;   
    109     }   
    110     return partStr;   
    111 }   
    112   
    113 /**  
    114 * 把日期分割成数组(原型扩展或重载)  
    115 * @type array  
    116 * @returns 日期数组  
    117 */   
    118 Date.prototype.toArray = function() {   
    119     var myDate = this;   
    120     var myArray = Array();   
    121     myArray[0= myDate.getFullYear();   
    122     myArray[1= myDate.getMonth()+1;   
    123     myArray[2= myDate.getDate();   
    124     myArray[3= myDate.getHours();   
    125     myArray[4= myDate.getMinutes();   
    126     myArray[5= myDate.getSeconds();   
    127     return myArray;   
    128 }   
    129   
    130 /**  
    131 * 取得当前月份的天数(原型扩展或重载)  
    132 * @type int  
    133 * @returns 天数  
    134 */   
    135 Date.prototype.daysOfMonth = function(){   
    136     var myDate = this;   
    137     var ary = myDate.toArray();   
    138     var date1 = (new Date(ary[0],ary[1]+1,1));   
    139     var date2 = date1.dateAdd('m',1);   
    140     var result = daysDiff(date1.format('yyyy-MM-dd'),date2.format('yyyy-MM-dd'));   
    141     return result;   
    142 }   
    143   
    144 /**  
    145 * 判断闰年(原型扩展或重载)  
    146 * @type boolean  
    147 * @returns 是否为闰年 true/false  
    148 */   
    149 Date.prototype.isLeapYear = function() {   
    150   return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));   
    151 }   
    152   
    153 /**  
    154 * 比较两个日期的天数差(自定义)  
    155 * @param {DateOne} 日期一  
    156 * @param {DateOne} 日期二  
    157 * @type int  
    158 * @returns 比较结果  
    159 */   
    160 function daysDiff(DateOne,DateTwo)   
    161 {   
    162     var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));   
    163     var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);   
    164     var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));   
    165   
    166     var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));   
    167     var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);   
    168     var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));   
    169   
    170     var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);   
    171     return Math.abs(cha);   
    172 }   
    173   
    174 /**  
    175 * 日期计算(自定义)  
    176 * @param {strInterval} 日期类型:'y、m、d、h、n、s、w'  
    177 * @param {Number} 数量  
    178 * @param {prmDate} 原日期  
    179 * @type Date  
    180 * @returns 计算后的日期  
    181 */   
    182 function dateAdd(interval,number,prmDate){   
    183   number = parseInt(number);   
    184   if (typeof(prmDate)=="string"){   
    185     prmDate = prmDate.split(/\D/);   
    186     --prmDate[1];   
    187     eval("var prmDate = new Date("+prmDate.join(",")+")");   
    188   }   
    189   if (typeof(prmDate)=="object"){   
    190     var prmDate = prmDate   
    191   }   
    192   switch(interval){   
    193     case "y": prmDate.setFullYear(prmDate.getFullYear()+number); break;   
    194     case "m": prmDate.setMonth(prmDate.getMonth()+number); break;   
    195     case "d": prmDate.setDate(prmDate.getDate()+number); break;   
    196     case "w": prmDate.setDate(prmDate.getDate()+7*number); break;   
    197     case "h": prmDate.setHours(prmDate.getHour()+number); break;   
    198     case "n": prmDate.setMinutes(prmDate.getMinutes()+number); break;   
    199     case "s": prmDate.setSeconds(prmDate.getSeconds()+number); break;   
    200     case "l": prmDate.setMilliseconds(prmDate.getMilliseconds()+number); break;   
    201   }   
    202   return prmDate;   
    203 }   
    204   
    205 /**  
    206 * 获取字符串长度(原型扩展或重载)  
    207 * @type int  
    208 * @returns 字符串长度  
    209 */   
    210 String.prototype.len = function() {   
    211   var arr=this.match(/[^\x00-\xff]/ig);   
    212   return this.length+(arr==null?0:arr.length);   
    213 }   
    214   
    215 /**  
    216 * 字符串左取指定个数的字符(原型扩展或重载)  
    217 * @param {num} 获取个数  
    218 * @type string  
    219 * @returns 匹配的字符串  
    220 */   
    221 String.prototype.left = function(num,mode) {   
    222   if(!/\d+/.test(num)) return(this);   
    223   var str = this.substr(0,num);   
    224   if(!mode) return str;   
    225   var n = str.len() - str.length;   
    226   num = num - parseInt(n/2);   
    227   return this.substr(0,num);   
    228 }   
    229   
    230 /**  
    231 * 字符串右取指定个数的字符(原型扩展或重载)  
    232 * @param {num} 获取个数  
    233 * @type string  
    234 * @returns 匹配的字符串  
    235 */   
    236 String.prototype.right = function(num,mode) {   
    237   if(!/\d+/.test(num)) return(this);   
    238   var str = this.substr(this.length-num);   
    239   if(!mode) return str;   
    240   var n = str.len() - str.length;   
    241   num = num - parseInt(n/2);   
    242   return this.substr(this.length-num);   
    243 }   
    244   
    245 /**  
    246 * 字符串包含(原型扩展或重载)  
    247 * @param {string: str} 要搜索的子字符串  
    248 * @param {bool: mode} 是否忽略大小写  
    249 * @type int  
    250 * @returns 匹配的个数  
    251 */   
    252 String.prototype.matchCount = function(str,mode) {   
    253   return eval("this.match(/("+str+")/g"+(mode?"i":"")+").length");   
    254 }   
    255   
    256 /**  
    257 * 去除左右空格(原型扩展或重载)  
    258 * @type string  
    259 * @returns 处理后的字符串  
    260 */   
    261 String.prototype.trim = function() {   
    262   return this.replace(/(^\s*)|(\s*$)/g,"");   
    263 }   
    264   
    265 /**  
    266 * 去除左空格(原型扩展或重载)  
    267 * @type string  
    268 * @returns 处理后的字符串  
    269 */   
    270 String.prototype.lTrim = function() {   
    271   return this.replace(/(^\s*)/g, "");   
    272 }   
    273   
    274 /**  
    275 * 去除右空格(原型扩展或重载)  
    276 * @type string  
    277 * @returns 处理后的字符串  
    278 */   
    279 String.prototype.rTrim = function() {   
    280   return this.replace(/(\s*$)/g, "");   
    281 }   
    282   
    283 /**  
    284 * 字符串转换为日期型(原型扩展或重载)  
    285 * @type Date  
    286 * @returns 日期  
    287 */   
    288 String.prototype.toDate = function() {    
    289   var converted = Date.parse(this);     
    290   var myDate = new Date(converted);    
    291   if (isNaN(myDate)) {var arys= this.split('-'); myDate = new Date(arys[0],--arys[1],arys[2]); }    
    292   return myDate;   
    293 }  
  • 相关阅读:
    Silverlight+WCF 实战网络象棋最终篇之房间装修WCF端(二)
    win7下如何添加虚拟网卡(转)
    Python天天美味(12) 条件判断的缩写(转)
    MENUITEMINFO结构的翻译(转)
    C语言写Python extension实践(转)
    Python天天美味(15) Python正则表达式操作指南(re使用)(转)
    Python Import机制备忘模块搜索路径(sys.path)、嵌套Import、package Import(转)
    python单例模式(转)
    Python 操作剪贴板(转)
    Base64加密原理(转)
  • 原文地址:https://www.cnblogs.com/netWild/p/1892326.html
Copyright © 2020-2023  润新知