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
}