utils方法,时间工具,数组排序,违禁词检测

utils方法记录

在线时间戳转换:https://tool.lu/timestamp
对象传参需要转义特殊字符[{、}、[、]、“、”、‘、’]在线转义查看:https://www.sojson.com/encodeurl.html
JSON在线解析:https://www.bejson.com/explore/index_new/

1、时间转化工具
//返回 01-12 的月份值  
function getMonth(date) {
    var month = "";
    month = date.getMonth() + 1; //getMonth()得到的月份是0-11  
    if (month < 10) {
        month = "0" + month;
    }
    return month;
}
//返回01-30的日期  
function getDay(date) {
    var day = "";
    day = date.getDate();
    if (day < 10) {
        day = "0" + day;
    }
    return day;
}
//小时 
function getHours(date) {
    var hours = "";
    hours = date.getHours();
    if (hours < 10) {
        hours = "0" + hours;
    }
    return hours;
}
//分 
function getMinutes(date) {
    var minute = "";
    minute = date.getMinutes();
    if (minute < 10) {
        minute = "0" + minute;
    }
    return minute;
}
//秒 
function getSeconds(date) {
    var second = "";
    second = date.getSeconds();
    if (second < 10) {
        second = "0" + second;
    }
    return second;
}
//转化为 把Long类型的1527672756454日期还原为yyyy-mm-dd 00-00
utils.dateFormat = function(time){
	var dateTypeDate = "";
	var date = new Date();
	date.setTime(time);
	dateTypeDate += date.getFullYear(); //年  
	dateTypeDate += "-" + getMonth(date); //月  
	dateTypeDate += "-" + getDay(date); //日  
	dateTypeDate += " " + getHours(date); //时  
	dateTypeDate += ":" + getMinutes(date); //分 
	dateTypeDate += ":" + getSeconds(date); //分 
	return dateTypeDate;
}
/* 
 * 时间格式化工具 
 * 把Long类型的1527672756454日期还原yyyy-MM-dd格式日期 
 */
utils.dateTimeFormat = function (time) {
    var dateTypeDate = "";
    var date = new Date();
    date.setTime(time);
    dateTypeDate += date.getFullYear(); //年  
    dateTypeDate += "-" + getMonth(date); //月  
    dateTypeDate += "-" + getDay(date); //日 
		return dateTypeDate;
}
// 求两个时间的天数差 日期格式为 YYYY-MM-dd
utils.daysBetween = function(Date1,Date2){
	let DateOne = utils.dateTimeFormat(Date1)
	let DateTwo = utils.dateTimeFormat(Date2)
	var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));
	var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);
	var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));
	var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));
	var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);
	var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));
	var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);
	return Math.abs(cha);
}
//计算属相
utils.datezodiac = function (time) {
	var date = new Date();
	date.setTime(time);
	var year = date.getFullYear()
	var arr1 = ['猴', '鸡', '狗', '猪', '鼠', '牛', '虎', '兔', '龙', '蛇', '马', '羊'];
	var result1 = /^\d{4}$/.test(year) ? arr1[year % 12] : false;
	return result1
}
// 计算星座(传入时间戳)
utils.constellation = function (time) {
	var dateTypeDate = "";
	var date = new Date();
	date.setTime(time);
	var month = date.getMonth() + 1;
	var day = date.getDate();
	var s = "魔羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯";
	var arr = [20,19,21,21,21,22,23,23,23,23,22,22]
	var constellation = s.substr(month*2-(day<arr[month-1]?2:0),2)
	return constellation
}
//一段时间之前判断(传入时间戳)【60分钟以前xx,超过60分钟则是一小时以前xx,超过天小时,则是几天前xx。。月。。年等】
utils.outLinedateTime = function (time) {
    var timestamp = (new Date()).getTime() - time;
    var outline = ''
    if(timestamp < 1000*60 ){
        outline = "刚刚离线"
    }else if(timestamp > 1000*60 && timestamp < 1000*60*60 ){
        outline = Math.floor(timestamp/(1000*60)) +"分钟前在线"
    }else if(timestamp > 1000*60*60 && timestamp < 1000*60*60*24){
        outline = Math.floor(timestamp/(1000*60*60)) +"小时前在线"
    }else if(timestamp > 1000*60*60*24 && timestamp < 1000*60*60*24*30){
        outline = Math.floor(timestamp/(1000*60*60*24)) +"天前在线"
    }else if(timestamp > 1000*60*60*24*30 && timestamp < 1000*60*60*24*30*12){
        outline = Math.floor(timestamp/(1000*60*60*24*30)) +"月前在线"
    }else if(timestamp > 1000*60*60*24*30*12 ){
        outline = Math.floor(timestamp/(1000*60*60*24*30*12)) +"年前在线"
    }
    return outline;
}
//动态时间显示(传入时间戳)【1分钟以内显示刚刚,1小时以内显示xx分钟前,不是今年显示xx年xx月xx日xx时xx分,今年显示xx月xx日x时xx分,本日非本月xx月xx日x时xx分,当月当日x时xx分】
utils.feelingTime = function (time) {
    var timestamp = (new Date()).getTime() - time;
    var feelingTime = ''
    let date = new Date();
    let nowYear = date.getFullYear()
    let nowMonth = date.getMonth() + 1;
    let nowDay = date.getDate();
    date.setTime(time);
    
    let year = date.getFullYear(); //年  
    let month = date.getMonth() + 1;
    let day = date.getDate();
    let hours = date.getHours()
    let minute = date.getMinutes()<10? "0" + date.getMinutes(): date.getMinutes()

    if(timestamp < 1000*60 ){
        feelingTime = "刚刚"
    }else if(timestamp > 1000*60 && timestamp < 1000*60*5 ){
        feelingTime = Math.floor(timestamp/(1000*60)) +"分钟前"
    }else if(nowYear>year){
        feelingTime = year + "年" + month + "月" + day + "日" + '\xa0\xa0' + hours + ":" + minute
    }else if(nowYear == year){
        if(nowMonth > month){
            feelingTime = month + "月" + day + "日" + '\xa0\xa0' + hours + ":" + minute
        }else if( nowMonth == month ){
            if( nowDay > day){
                feelingTime = month + "月" + day + "日" + '\xa0\xa0' + hours + ":" + minute
            }else if(nowDay = day){
                feelingTime = hours + ":" + minute
            }
        }   
    }
    return feelingTime;
}
/**
 * 时间格式化工具
 * @param {Number} time 时间戳
 * @returns MM-dd格式日期 
 */
utils.dateFormatMouth = function (time) {
    var dateTypeDate = "";
    var date = new Date();
    date.setTime(time);
    dateTypeDate += getMonth(date); //月  
    dateTypeDate += "-" + getDay(date); //日  
    return dateTypeDate;
}
/**
 * 时间格式化工具
 * @param {Number} time 时间戳
 * @returns MM月dd日格式日期 
 */
utils.dateFormatMouthWords = function (time) {
    var dateTypeDate = "";
    var date = new Date();
    date.setTime(time);
    dateTypeDate += getMonth(date); //月  
    dateTypeDate += '月' + getDay(date) + '日'; //日  
    return dateTypeDate;
}

违禁词

// 检测是否有违禁词,返回Boo值
utils.judgeEensitiveWord = function (str) {
    let judegeRes = false;
    let word = words.sensitiveWords;
    for (let i in word) {
        let value = str
        // 全局替换
        let reg = new RegExp(word[i], 'ig');
        // 判断内容中是否包括敏感词
        if (value.indexOf(word[i]) != -1) {
            let result = value.replace(reg, '**');
            value = result;
            console.log(word[i])
            judegeRes = true;
        }
    }
    return judegeRes;
}
// 检测是否有违禁词,返回*号替换后的文本
utils.judgeEensitiveWordContentChat = function (str) {
    if (str== null) return null;
    let word = words.sensitiveWordsContent;
    for (let i in word) {
        let value = str
        // 全局替换
        let reg = new RegExp(word[i], 'ig');
        // 判断内容中是否包括敏感词
        if (value.indexOf(word[i]) != -1) {
            str= str.replace(reg, '**');
            console.log(word[i])
        }
    }
    return str;
}
// 检测是否有违禁词,返回Object{Boo:是否含违禁,word:违禁词}
utils.judgeEensitiveWordObj = function (str) {
    let judegeResObj = {
        judegeRes:false,
        word:''
    };
    let word = words.sensitiveWords;
    for (let i in word) {
        let value = str
        // 全局替换
        let reg = new RegExp(word[i], 'ig');
        // 判断内容中是否包括敏感词
        if (value.indexOf(word[i]) != -1) {
            let result = value.replace(reg, '**');
            value = result;
            console.log(word[i])
            judegeResObj.word = word[i]
            judegeResObj.judegeRes = true;
        }
    }
    return judegeResObj;
}


//外部js文件
'use strict' //使用严格模式

var sensitiveWords = [骂人词汇数组]
var sensitiveWordsContent = [违禁词数组]

export default {
  sensitiveWords,
  sensitiveWordsContent,
}

  /**
   * 残疾人身份证号码校验
   */
utils.isDisabledIdCard = function (idCard){
    let lastNumber;
    let lastButOneNumber;
    let idNumber;
    if(idCard.length == 17){
        lastNumber = idCard.substring(16, 17)
        if(lastNumber > 4 || lastNumber < 1){
            return false;
        }
        lastButOneNumber = idCard.substring(15, 16)
        if(lastButOneNumber > 7 || lastButOneNumber < 1){
            return false;
        }
        idNumber = idCard.substring(0, 15);
    } else if(idCard.length == 20){
        lastNumber = idCard.substring(19, 20)
        if(lastNumber > 4 || lastNumber < 1){
            return false;
        }
        lastButOneNumber = idCard.substring(18, 19)
        if(lastButOneNumber > 7 || lastButOneNumber < 1){
            return false;
        }
        idNumber = idCard.substring(0, 18)
    } else{
        return false; 
    }
    return utils.isIdCard(idNumber);
}
utils.isIdCard = function (idCard){
    let idNumber = idCard;
    const rr = /^[1-9]\d{1}(.{13}|.{16})$/;
    if(rr.test(idNumber)){
        if(idNumber.length==18){
            //加权因子
            let weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
            // 校验位
            let check_code = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
            let idWiSum = 0
            for(let i = 0; i < 17; i++){
                idWiSum += idNumber.substring(i, i + 1) * weight_factor[i];
            }
            //计算模
            let idMod = idWiSum % 11  
            let idLastCode = check_code[idMod]
            if(idNumber[17] == idLastCode){
                return true;
            }
            if(idNumber[17] == 'x' && idLastCode == 'X'){
                return true;
            }
        }
    }
    return false;
}
//数组排序
utils.sortKey = function (array, key) {
    return array.sort(function(a, b){
        var x = a[key];
        var y = b[key];
        return x - y;   //从小到大排序
    })
}

utils.sortKeyBigToSmall = function (array, key) {
    return array.sort(function(a, b){
        var x = a[key];
        var y = b[key];
        return y - x;   //从大到小排序
    })
}
//发表时间动态计算
utils.getMoodUpdateTime = function (time) {
    var timestamp = (new Date()).getTime() - time;
    var updateTime = ''
    if(timestamp < 1000*60 ){
        updateTime = "刚刚"
    }else if(timestamp > 1000*60 && timestamp < 1000*60*60 ){
        updateTime = Math.floor(timestamp/(1000*60)) +"分钟前"
    }else if(timestamp > 1000*60*60 && timestamp < 1000*60*60*24){
        updateTime = Math.floor(timestamp/(1000*60*60)) +"小时前"
    }else if(timestamp > 1000*60*60*24 && timestamp < 1000*60*60*24*30){
        updateTime = Math.floor(timestamp/(1000*60*60*24)) +"天前"
    }else if(timestamp > 1000*60*60*24*30 && timestamp < 1000*60*60*24*30*12){
        updateTime = Math.floor(timestamp/(1000*60*60*24*30)) +"月前"
    }else if(timestamp > 1000*60*60*24*30*12 ){
        updateTime = Math.floor(timestamp/(1000*60*60*24*30*12)) +"年前"
    }
    return updateTime;
}
//离线时间动态计算
utils.getOfflineTime = function (time) {
    var timestamp = (new Date()).getTime() - time;
    var offline = ''
    if(timestamp < 1000*60 ){
        offline = "刚刚离线"
    }else if(timestamp > 1000*60 && timestamp < 1000*60*60 ){
        offline = "离线" + Math.floor(timestamp/(1000*60)) + "分钟"
    }else if(timestamp > 1000*60*60 && timestamp < 1000*60*60*24){
        offline = "离线" + Math.floor(timestamp/(1000*60*60)) +"小时"
    }else if(timestamp > 1000*60*60*24 && timestamp < 1000*60*60*24*30){
        offline = "离线" + Math.floor(timestamp/(1000*60*60*24)) +"天"
    }else if(timestamp > 1000*60*60*24*30 && timestamp < 1000*60*60*24*30*12){
        offline = "离线" + Math.floor(timestamp/(1000*60*60*24*30)) +"月"
    }else if(timestamp > 1000*60*60*24*30*12 ){
        offline = "离线" + Math.floor(timestamp/(1000*60*60*24*30*12)) +"年"
    }
    return offline;
}
//数组随机一个数组项
utils.getArrRandomItem = function(arr){
    let str = arr[Math.floor(Math.random() * arr.length)]
    return str
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lazy33

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值