js常用函数收集

// 时间戳转时间

function time(time = +new Date()) {
    var date = new Date((time + 8 * 3600) * 1000);
    return date.toJSON().substr(0, 19).replace('T', ' ');
}

// 秒转时分秒

function secondToTime (time) {
      var h = parseInt(time / 3600);
      var m = parseInt(time % 3600 / 60);
      var s = parseInt(time % 3600 % 60);
      return h + '时' + m + '分' + s + '秒';
}
function secondToDayTime(time) {
      var d = parseInt(time / (3600*24));
      var h = parseInt( time%(3600*24) / 3600);
      var m = parseInt(time % 3600 / 60);
      var s = parseInt(time % 3600 % 60);
      return d + '天' + h + '时' + m + '分' + s + '秒';
}

//获取url参数

function getValFromUrl(str) {
      var reg = new RegExp("(^|&)" + str + "=([^&]*)(&|$)", "i");
      var r = window.location.search.substr(1).match(reg);
      if (r != null) return decodeURI(r[2]);
      return null;
  }

// 验证手机号码

String.isMobilePhone = function(str) {
        var a = /^1[3|4|5|7|8][0-9]\d{4,8}$/;
        return a.test(str);
    }

// 验证邮箱

String.isEmail = function(str) {
        var a = /(\S)+[@]{1}(\S)+[.]{1}(\w)+/;
        return a.test(str);
    }

//获取浏览器版本

var browser = {
        versions: function() {
            var u = navigator.userAgent,
                app = navigator.appVersion;
            return { //移动终端浏览器版本信息
                trident: u.indexOf('Trident') > -1, //IE内核
                presto: u.indexOf('Presto') > -1, //opera内核
                webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), //是否为移动终端
                ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
                iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器
                iPad: u.indexOf('iPad') > -1, //是否iPad
                webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
                weiXin: u.indexOf('MicroMessenger') > -1
            };
        }(),
        language: (navigator.browserLanguage || navigator.language).toLowerCase()
    }

// 验证身份证号

function checkIdcard(idcard) {
        var area = {
            11: "北京",
            12: "天津",
            13: "河北",
            14: "山西",
            15: "内蒙古",
            21: "辽宁",
            22: "吉林",
            23: "黑龙江",
            31: "上海",
            32: "江苏",
            33: "浙江",
            34: "安徽",
            35: "福建",
            36: "江西",
            37: "山东",
            41: "河南",
            42: "湖北",
            43: "湖南",
            44: "广东",
            45: "广西",
            46: "海南",
            50: "重庆",
            51: "四川",
            52: "贵州",
            53: "云南",
            54: "西藏",
            61: "陕西",
            62: "甘肃",
            63: "青海",
            64: "宁夏",
            65: "新疆",
            71: "台湾",
            81: "香港",
            82: "澳门",
            91: "国外"
        }
        var idcard, Y, JYM;
        var S, M;
        var idcard_array = new Array();
        idcard_array = idcard.split("");
        //地区检验
        if (area[parseInt(idcard.substr(0, 2))] == null)
            return false;
        //身份号码位数及格式检验
        switch (idcard.length) {
            case 15:
                if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) {
                    ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/; //测试出生日期的合法性
                } else {
                    ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/; //测试出生日期的合法性
                }
                if (ereg.test(idcard))
                    return false;
                else
                    return false;
                break;
            case 18:
                //18位身份号码检测
                //出生日期的合法性检查
                //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
                //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
                if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)) {
                    ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/; //闰年出生日期的合法性正则表达式
                } else {
                    ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/; //平年出生日期的合法性正则表达式
                }
                if (ereg.test(idcard)) { //测试出生日期的合法性
                    //计算校验位
                    S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 +
                        (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 +
                        (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 +
                        (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 +
                        (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 +
                        (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 +
                        (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 +
                        parseInt(idcard_array[7]) * 1 +
                        parseInt(idcard_array[8]) * 6 +
                        parseInt(idcard_array[9]) * 3;
                    Y = S % 11;
                    M = "F";
                    JYM = "10X98765432";
                    M = JYM.substr(Y, 1); //判断校验位
                    if (M == idcard_array[17])
                        return true; //检测ID的校验位
                    else
                        return false;
                } else
                    return false;
                break;
            default:
                return false;
                break;
        }
    }

// Cookie 读写

var cookie = {
        set:function(key,val,time){
            var date=new Date();
            var expiresDays=time;
            date.setTime(date.getTime()+expiresDays*24*3600*1000);
            document.cookie=key + "=" + val +";expires="+date.toGMTString();
        },
        get:function(key){
            var getCookie = document.cookie.replace(/[ ]/g,"");
            var arrCookie = getCookie.split(";")
            var tips = '';
            for(var i=0;i<arrCookie.length;i++){
                var arr=arrCookie[i].split("=");
                if(key==arr[0]){
                    tips=arr[1];
                    break;
                }
            }
            return tips;
        }
    }

 

//简单计算字节长度

String.getBlength = function (str) {
    for (var i = str.length, n = 0; i--; ) {
        n += str.charCodeAt(i) > 255 ? 2 : 1;
    }
    return n;
}

//按指定字节截取字符串

String.cutByte = function(str,len,endstr){
    var len = +len
        ,endstr = typeof(endstr) == 'undefined' ? "..." : endstr.toString();
    function n2(a){ var n = a / 2 | 0; return (n > 0 ? n : 1)} //用于二分法查找
    if(!(str+"").length || !len || len<=0){return "";}
    if(this.getBlength(str) <= len){return str;}
    var lenS = len - this.getBlength(endstr)
        ,_lenS = 0
        , _strl = 0
    while (_strl <= lenS){
        var _lenS1 = n2(lenS -_strl)
        _strl += this.getBlength(str.substr(_lenS,_lenS1))
        _lenS += _lenS1
    }
    return str.substr(0,_lenS-1) + endstr
}

// 全角转半角

function QJtoBJ(transStr) {
    if ($.trim(transStr) == '') {
        return '';
    }

    var i;
    var result = '';
    for (i = 0; i < transStr.length; i++) {
        code = transStr.charCodeAt(i);
        // “65281”是“!”,“65373”是“}”
        if (code >= 65281 && code < 65373)
            // “65248”是转换码距
            result += String.fromCharCode(transStr.charCodeAt(i) - 65248);
        else
            result += transStr.charAt(i);
    }
    return result;
}

 

posted @ 2019-04-23 11:04  1553  阅读(136)  评论(0编辑  收藏  举报