javascript:工具包(2016/11/17)

来源:互联网 发布:绘画专业学什么软件 编辑:程序博客网 时间:2024/06/08 06:05
/** * RegUtils * g(全局)会记录匹配的位置 */var ipReg = new RegExp(/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/);if(typeof jQuery === "undefined"){jQuery = $ = {};}/** * IpUtils */(function($, undefined ) {/** * Ip与Number的相互转换 */$.ip = {};$.ip.ipToNumber = function(ip) {if(!$.type.is(ip, "String")) {console.error("ipToNumber(ip) ip only String"); return undefined};var ips = 0, numbers = ip.split(".");for (var i = 0; i < 4; ++i) {ips = ips << 8 | parseInt(numbers[i]);}return ips;   }      $.ip.numberToIp = function(number) {if(!$.type.is(number, "Number")) {console.error("numberToIp(number) number only Number"); return undefined};var ip = [];for (var i = 3; i >= 0; i--) {ip[i] = number & 0xff;number = number >> 8;}return ip.join(".");    }/** * 检测ip是否是否重复 */$.ip.isDuplicate = function(sourceFrom, sourceTo, targetFrom, targetTo){if(!$.type.is(sourceFrom, "String") || !ipReg.test(sourceFrom)) {console.error("isDuplicate(sourceFrom, sourceTo, targetFrom, targetTo) sourceFrom only String and ip format"); return false};if(!$.type.is(sourceTo, "String") || !ipReg.test(sourceTo)) {console.error("isDuplicate(sourceFrom, sourceTo, targetFrom, targetTo) sourceTo only String and ip format"); return false};if(!$.type.is(targetFrom, "String") || !ipReg.test(targetFrom)) {console.error("isDuplicate(sourceFrom, sourceTo, targetFrom, targetTo) targetFrom only String and ip format"); return false};if(!$.type.is(targetTo, "Undefined") && (!$.type.is(targetTo, "String") || !ipReg.test(targetTo))) {console.error("isDuplicate(sourceFrom, sourceTo, targetFrom, targetTo) targetTo only String and ip format"); return false};if($.ip.ipToNumber(sourceFrom) <= $.ip.ipToNumber(targetFrom) && $.ip.ipToNumber(sourceTo) >= $.ip.ipToNumber(targetFrom)){return true;}if(targetTo !== undefined && $.ip.ipToNumber(sourceFrom) <= $.ip.ipToNumber(targetTo) && $.ip.ipToNumber(sourceTo) >= $.ip.ipToNumber(targetTo)){return true;}return false}})(jQuery);/** * DataUtils */var WEEK = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];var MONTH = ["January", "Feburary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];var QUARTER = ["Spring", "Summer", "Autumn", "Winter"];var PERIOD = ["AM", "PM"];/** * 对应Windows中Java获取的时区 * Object是无序的 * 同一个时区里面,只能有一个标准(isStandard) */var TIMEZONE = {"GMT-12:00":{code:"GMT-12:00", offsetHours:"-1200", offset:720, name:"GMT-12:00", isStandard:true},"GMT-11:00":{code:"GMT-11:00", offsetHours:"-1100", offset:660, name:"GMT-11:00", isStandard:true},"HST":{code:"HST", offsetHours:"-1000", offset:600, name:"Hawaii Standard Time", isStandard:true},"AKST":{code:"AKST", offsetHours:"-0900", offset:540, name:"Alaska Standard Time", isStandard:true},"PST":{code:"PST", offsetHours:"-0800", offset:480, name:"Pacific Standard Time", isStandard:true},"MST":{code:"MST", offsetHours:"-0700", offset:420, name:"Mountain Standard Time", isStandard:true},"CST_":{code:"CST", offsetHours:"-0600", offset:360, name:"Central Standard Time", isStandard:true},"EST":{code:"EST", offsetHours:"-0500", offset:300, name:"Eastern Standard Time", isStandard:true},"COT":{code:"COT", offsetHours:"-0500", offset:300, name:"Colombia Time"},"VET":{code:"VET", offsetHours:"-0430", offset:270, name:"Venezuela Time", isStandard:true},"AST":{code:"AST", offsetHours:"-0400", offset:240, name:"Atlantic Standard Time", isStandard:true},"BOT":{code:"BOT", offsetHours:"-0400", offset:240, name:"Bolivia Time"},"PYST":{code:"PYST", offsetHours:"-0400", offset:240, name:"Paraguay Summer Time"},"NST":{code:"NST", offsetHours:"-0330", offset:210, name:"Newfoundland Standard Time"},"ADT":{code:"ADT", offsetHours:"-0300", offset:180, name:"Atlantic Daylight Time", isStandard:true},"AMST":{code:"AMST", offsetHours:"-0300", offset:180, name:"Amazon Summer Time"},"CLT":{code:"CLT", offsetHours:"-0300", offset:180, name:"Chile Time"},"ART":{code:"ART", offsetHours:"-0300", offset:180, name:"Argentine Time"},"WGT":{code:"WGT", offsetHours:"-0300", offset:180, name:"Western Greenland Time"},"GFT":{code:"GFT", offsetHours:"-0300", offset:180, name:"French Guiana Time"},"GMT-02:00":{code:"GMT-02:00", offsetHours:"-0200", offset:120, name:"GMT-02:00", isStandard:true},"GST":{code:"GST", offsetHours:"-0200", offset:120, name:"South Georgia Standard Time"},"BRST":{code:"BRST", offsetHours:"-0200", offset:120, name:"Brasilia Summer Time"},"UYST":{code:"UYST", offsetHours:"-0200", offset:120, name:"Uruguay Summer Time"},"GST":{code:"GST", offsetHours:"-0200", offset:120, name:"South Georgia Standard Time"},"CVT":{code:"CVT", offsetHours:"-0100", offset:60, name:"Cape Verde Time", isStandard:true},"AZOT":{code:"AZOT", offsetHours:"-0100", offset:60, name:"Azores Time"},"GMT":{code:"GMT", offsetHours:"+0000", offset:0, name:"Greenwich Mean Time", isStandard:true},"WET":{code:"WET", offsetHours:"+0000", offset:0, name:"Western European Time"},"UTC":{code:"UTC", offsetHours:"+0000", offset:0, name:"Coordinated Universal Time"},"CET":{code:"CET", offsetHours:"+0100", offset:-60, name:"Central European Time", isStandard:true},"WAT":{code:"WAT", offsetHours:"+0100", offset:-60, name:"Western African Time"},"EET":{code:"EET", offsetHours:"+0200", offset:-120, name:"Eastern European Time", isStandard:true},"WAST":{code:"WAST", offsetHours:"+0200", offset:-120, name:"Western African Summer Time"},"CAT":{code:"CAT", offsetHours:"+0200", offset:-120, name:"Central African Time"},"IST":{code:"IST", offsetHours:"+0200", offset:-120, name:"Israel Standard Time"},//冲突"AST_":{code:"AST", offsetHours:"+0300", offset:-180, name:"Arabia Standard Time"},"MSK":{code:"MSK", offsetHours:"+0300", offset:-180, name:"Moscow Standard Time", isStandard:true},"EAT":{code:"EAT", offsetHours:"+0300", offset:-180, name:"Eastern African Time"},"IRST":{code:"IRST", offsetHours:"+0330", offset:-210, name:"Iran Standard Time", isStandard:true},"GST":{code:"GST", offsetHours:"+0400", offset:-240, name:"Gulf Standard Time", isStandard:true},"AMT":{code:"AMT", offsetHours:"+0400", offset:-240, name:"Armenia Time"},"AZT":{code:"AZT", offsetHours:"+0400", offset:-240, name:"Azerbaijan Time"},"GET":{code:"GET", offsetHours:"+0400", offset:-240, name:"Georgia Time"},"MUT":{code:"MUT", offsetHours:"+0400", offset:-240, name:"Mauritius Time"},"AFT":{code:"AFT", offsetHours:"+0430", offset:-270, name:"Afghanistan Time", isStandard:true},"UZT":{code:"UZT", offsetHours:"+0500", offset:-300, name:"Uzbekistan Time", isStandard:true},"YEKT":{code:"YEKT", offsetHours:"+0500", offset:-300, name:"Yekaterinburg Time"},"PKT":{code:"PKT", offsetHours:"+0500", offset:-300, name:"Pakistan Time"},"IST":{code:"IST", offsetHours:"+0530", offset:-330, name:"India Standard Time", isStandard:true},"NPT":{code:"NPT", offsetHours:"+0545", offset:-345, name:"Nepal Time", isStandard:true},"NOVT":{code:"NOVT", offsetHours:"+0600", offset:-360, name:"Novosibirsk Time", isStandard:true},"ALMT":{code:"ALMT", offsetHours:"+0600", offset:-360, name:"Alma-Ata Time"},"BDT":{code:"BDT", offsetHours:"+0600", offset:-360, name:"Bangladesh Time"},"MMT":{code:"MMT", offsetHours:"+0630", offset:-390, name:"Myanmar Time", isStandard:true},"ICT":{code:"ICT", offsetHours:"+0700", offset:-420, name:"Indochina Time", isStandard:true},"KRAT":{code:"KRAT", offsetHours:"+0700", offset:-420, name:"Krasnoyarsk Time"},"CST":{code:"CST", offsetHours:"+0800", offset:-480, name:"China Standard Time", isStandard:true},"SGT":{code:"SGT", offsetHours:"+0800", offset:-480, name:"Singapore Time"},"AWST":{code:"AWST", offsetHours:"+0800", offset:-480, name:"Australian Western Standard Time"},"ULAT":{code:"ULAT", offsetHours:"+0800", offset:-480, name:"Ulaanbaatar Time"},"IRKT":{code:"IRKT", offsetHours:"+0800", offset:-480, name:"Irkutsk Time"},"JST":{code:"JST", offsetHours:"+0900", offset:-540, name:"Japan Standard Time", isStandard:true},"KST":{code:"KST", offsetHours:"+0900", offset:-540, name:"Korea Standard Time"},"YAKT":{code:"YAKT", offsetHours:"+0900", offset:-540, name:"Yakutsk Time"},"ACST":{code:"ACST", offsetHours:"+0930", offset:-570, name:"Australian Central Standard Time (Northern Territory)", isStandard:true},"AEST":{code:"AEST", offsetHours:"+1000", offset:-600, name:"Australian Eastern Standard Time (Queensland)", isStandard:true},"VLAT":{code:"VLAT", offsetHours:"+1000", offset:-600, name:"Vladivostok Time"},"ChST":{code:"ChST", offsetHours:"+1000", offset:-600, name:"Chamorro Standard Time"},"MAGT":{code:"MAGT", offsetHours:"+1000", offset:-600, name:"Magadan Time"},"ACDT":{code:"ACDT", offsetHours:"+1030", offset:-630, name:"Australian Central Daylight Time (South Australia)", isStandard:true},"AEDT":{code:"AEDT", offsetHours:"+1100", offset:-660, name:"Australian Eastern Daylight Time (New South Wales)", isStandard:true},"AEDT_":{code:"AEDT", offsetHours:"+1100", offset:-660, name:"Australian Eastern Daylight Time (Tasmania)"},"SBT":{code:"SBT", offsetHours:"+1100", offset:-660, name:"Solomon Is. Time"},"NZST":{code:"NZST", offsetHours:"+1200", offset:-720, name:"New Zealand Standard Time", isStandard:true},"NZDT":{code:"NZDT", offsetHours:"+1300", offset:-780, name:"New Zealand Daylight Time", isStandard:true},"FJST":{code:"FJST", offsetHours:"+1300", offset:-780, name:"Fiji Summer Time"},"TOT":{code:"TOT", offsetHours:"+1300", offset:-780, name:"Tonga Time"},"WSDT":{code:"WSDT", offsetHours:"+1400", offset:-840, name:"West Samoa Daylight Time", isStandard:true},};(function($, undefined ) {$.date = {};$.date.formatToString = function(date, fmt, timeZone) {if(!$.type.is(date, "Date")) {console.error("formatToString(date, fmt, timeZone) date only Date"); return undefined;};if(!$.type.getType(fmt, "Undefined") && !$.type.is(fmt, "String")) {console.error("formatToString(date, fmt, timeZone) fmt only String"); return date;};if(!$.type.getType(timeZone, "Undefined") && !$.type.is(timeZone, "String")) {console.error("formatToString(date, fmt, timeZone) timeZone only String"); return date;};var timeZone_;for(var i in TIMEZONE){if(timeZone !== undefined && TIMEZONE[i].code === timeZone && TIMEZONE[i].isStandard){timeZone_ = TIMEZONE[i];//如果timeZone不为空,加入时间的偏移量date = new Date(date.getTime() + date.getTimezoneOffset()*60*1000 - timeZone_.offset*60*1000)break;}if(timeZone === undefined && TIMEZONE[i].offset === date.getTimezoneOffset() && TIMEZONE[i].isStandard){timeZone_ = TIMEZONE[i];break;}}var o = {    "y+" : date.getFullYear(),               "M+" : date.getMonth(), //月份    "E+" : date.getDay(),               "d+" : date.getDate(), //日    "a+" : date.getHours() < 12 ? 0 : 1,    "Z+" : date.getTimezoneOffset(), //单位分钟    "z+" : date.getTimezoneOffset(), //单位分钟    "h+" : date.getHours()%12 == 0 ? 12 : date.getHours()%12, //小时               "H+" : date.getHours(), //小时               "m+" : date.getMinutes(), //分               "s+" : date.getSeconds(), //秒               "q+" : Math.floor(date.getMonth()/3), //季度               "S+" : date.getMilliseconds() //毫秒               };    var parms = [];    for(var k in o){    /*    console.log(new RegExp("("+ k +")("+ k +")").exec(fmt));    console.log(fmt.search(new RegExp("("+ k +")")));    console.log(fmt.match(new RegExp("("+ k +")", "g")));    */while(new RegExp("("+ k +")").test(fmt)){                      fmt = fmt.replace(RegExp.$1,  function(oldStr, index, fmt){            /*             RegExp.$1 === oldStr             如果在函数内用正则表达式的话,RegExp.$1会被替换掉,可以用oldStr替代           */            if(k === "y+" && RegExp.$1.length < 4){        return (o[k]+"").substr(2);               }                        if(k === "Z+"){    return "GMT" + timeZone_.offsetHours;    }                        /*    替换为英文名称后会影响到之后的匹配,所以先用{\d}替换,value保存在Array    等整个替换完成之后,再去替换{\d}    */            if(k === "z+"){            parms.push(oldStr.length <= 3 ? timeZone_.code : timeZone_.name);            return "{" + (parms.length - 1 ) + "}";    }    if(k === "q+" && oldStr.length >= 2){    var quarter = QUARTER[o[k]];    parms.push(oldStr.length > 2 ? quarter : quarter.substring(0, 3));    return "{" + (parms.length - 1 ) + "}";    }    if(k === "M+" && oldStr.length >= 3){    var month = MONTH[o[k]];    parms.push(oldStr.length > 3 ? month : month.substring(0, 3));    return "{" + (parms.length - 1 ) + "}";    }    if(k === "E+"){    var week = WEEK[o[k]];    parms.push(oldStr.length > 3 ? week : week.substring(0, 3));    return "{" + (parms.length - 1 ) + "}";    }     if(k === "a+"){    parms.push(PERIOD[o[k]]);    return "{" + (parms.length - 1 ) + "}";    }            return (RegExp.$1.length==1) ? (o[k]) : (function(){            var str = o[k];            for(var i = 0; i < (RegExp.$1.length - (""+o[k]).length); i++){            //多余的位数用0补齐            str = "0" + str;            }            return str;            }());           });        }        }    parms.forEach(function(item, index, array){    fmt = fmt.replace("{" + index + "}", item);    });    return fmt;           }/** * 根据偏移的分钟数获取偏移的小时数(私有方法) */function getOffest(offest){return (offest+"").replace(/(\-|\+)?(\d+)/, function(){    var symbol = arguments[1] === "-" || offest === 0 ? "+" : "-";    var offset = parseInt(arguments[2]);    var hours = Math.floor(offset/60) + "";    var minutes = offset%60 + "";    return symbol + (hours.length < 2 ? "0"+hours : hours) + (minutes.length < 2 ? "0"+minutes : minutes)    });}$.date.formatToDate = function(str, fmt, timeZone) {if(!$.type.is(str, "String")) {console.error("formatToDate(str, fmt) str only String"); return undefined;};if(!$.type.getType(fmt, "Undefined") && !$.type.is(fmt, "String")) {console.error("formatToDate(str, fmt) fmt only String"); return undefined;};if(!$.type.getType(timeZone, "Undefined") && !$.type.is(timeZone, "String")) {console.error("formatToString(date, fmt, timeZone) timeZone only String"); return date;};var date = new Date();/* 这两种方法有局限性,不利于扩展 date = new Date(str); date = new Date(Date.parse(str)); */var o = {    "y+" : date.setFullYear, //年份              "M+" : date.setMonth, //月份    "d+" : date.setDate, //日    "H+" : date.setHours, //小时               "m+" : date.setMinutes, //分               "s+" : date.setSeconds, //秒               "S+" : date.setMilliseconds //毫秒               };for(var k in o){var reg = new RegExp("("+ k +")", "g");var result;while((result = reg.exec(fmt)) != null){var value = str.substring(result.index, result.index + result[0].length);if(k === "M+"){if(result[1].length >= 3){//i,为string    for(var i in MONTH){    if(MONTH[i].indexOf(value) > -1){    value = parseInt(i);    break;    }else{    continue;    }    }}else{value = parseInt(value) - 1;}    }o[k].call(date, value);}        }for(var i in TIMEZONE){if(timeZone !== undefined && TIMEZONE[i].code === timeZone && TIMEZONE[i].isStandard){timeZone_ = TIMEZONE[i];//如果timeZone不为空,加入时间的偏移量date = new Date(date.getTime() + timeZone_.offset*60*1000 - date.getTimezoneOffset()*60*1000);break;}}return date;}})(jQuery);(function($, undefined ) {$.string = {};$.string.toUnicode = function(str){if(!$.type.is(str, "String")) {console.error("toUnicode(str) str only String"); return str}; var rtn = ""; //\\u 必须加斜杠转义,不然会被当做Unicode处理 str.split("").forEach(function(item, index, array){ rtn += "\\u" + left_zero_4(parseInt(item.charCodeAt(0)).toString(16)); }); return rtn;}$.string.unicodeToString = function(str){if(!$.type.is(str, "String")) {console.error("unicodeToString(str) str only String"); return str};var rtn = "";rtn = str.replace(/\\u(\w{1,4})/ig, function(){return String.fromCharCode(parseInt(arguments[1], 16));});return rtn;}$.string.toAscii = function(str){if(!$.type.is(str, "String")) {console.error("toAscii(str) str only String"); return str};var value="";for (var i = 0; i < str.length; i++){value += "&#" + str.charCodeAt(i) + ";";}return value;}$.string.asciiToString = function(str){if(!$.type.is(str, "String")) {console.error("asciiToString(str) str only String"); return str};var rtn = "";rtn = str.replace(/&#(\w{1,6});/ig, function(){return String.fromCharCode(arguments[1]);});return rtn;}function left_zero_4(str) {if (str != null && str != '' && str != 'undefined') {if (str.length == 2) {return '00' + str;}}return str;}})(jQuery);(function($, undefined ) {$.type = {};$.type.getType =  function(object){    return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];};/* *基本类型 *"Array", "Boolean", "Date", "Number", "Object", "RegExp", "String", "Window",  *"HTMLDocument", "Function", "Undefined" *如果类型为Object再做进一次的判断 *type */$.type.is = function(object, type){if($.type.getType(type).toUpperCase() === "String".toUpperCase()){if($.type.getType(object).toUpperCase() === type.toUpperCase()){return true;}}else{try{if(object instanceof type) return true;}catch(e){console.error(e);}}return false;}})(jQuery);/*Array.forEach implementation for IE support..  https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach兼容IE的forEach  */if (!Array.prototype.forEach) {    Array.prototype.forEach = function(callback, thisArg) {        var T, k;        if (this == null) {            throw new TypeError(" this is null or not defined");        }        var O = Object(this);        var len = O.length >>> 0; // Hack to convert O.length to a UInt32        if ({}.toString.call(callback) != "[object Function]") {            throw new TypeError(callback + " is not a function");        }        if (thisArg) {            T = thisArg;        }        k = 0;        while (k < len) {            var kValue;            if (k in O) {                kValue = O[k];                callback.call(T, kValue, k, O);            }            k++;        }    };  } 


两周的结果,程序猿在于积累。

0 0
原创粉丝点击