一、与时间处理相关
1、将当前的日期时间 转为“yyyy-MM-dd HH:MM:SS”格式
function getNowTimesFormate (s1, s2, date) {
if (date == null) {
date = new Date()
}
var seperator1 = '-'
if (s1 != null) {
seperator1 = s1
}
var seperator2 = ':'
if (s2 != null) {
seperator2 = s2
}
var month = date.getMonth() + 1
var strDate = date.getDate()
var strHours = date.getHours()
var strMinutes = date.getMinutes()
var strSeconds = date.getSeconds()
if (month >= 1 && month <= 9) {
month = '0' + month
}
if (strDate >= 0 && strDate <= 9) {
strDate = '0' + strDate
}
if (strHours >= 0 && strHours <= 9) {
strHours = '0' + strHours
}
if (strMinutes >= 0 && strMinutes <= 9) {
strMinutes = '0' + strMinutes
}
if (strSeconds >= 0 && strSeconds <= 9) {
strSeconds = '0' + strSeconds
}
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + ' ' + strHours + seperator2 + strMinutes + seperator2 + strSeconds
return currentdate
}
2、格式化时间戳123142361为“yyyy.mm.dd hh.mm.ss”
function formateTimestamphms (timeStamp) {
const date = new Date(timeStamp)
const Y = date.getFullYear() + '.'
const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '.'
const D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getMonth()) + ' '
const h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':'
const m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':'
const s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds())
const formateTimestamphms = Y + M + D + h + m + s
return formateTimestamphms
}
3、计算出两个时间的时间差
返回格式可自行拼接,若startDate和endDate均为时间戳可以直接使用该方法,如果startDate和endDate为格式化好的时间需要先将其转化为时间戳
function mistiming (startDate, endDate) {
const total = (endDate - startDate) / 1000
var day;
var hour;
var min;
var seconds;
day = parseInt(total / (24 * 60 * 60)) // 计算整数天数
var afterDay = total - day * 24 * 60 * 60 // 取得算出天数后剩余的秒数
hour = parseInt(afterDay / (60 * 60)) // 计算整数小时数
var afterHour = total - day * 24 * 60 * 60 - hour * 60 * 60 // 取得算出小时数后剩余的秒数
min = parseInt(afterHour / 60) // 计算整数分
seconds = parseInt(total - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60) // 取得算出分后剩余的秒数
if (day < 10) {
day = '0' + day;
}
if (hour < 10) {
hour = '0' + hour;
}
if (min < 10) {
min = '0' + min;
}
if (seconds < 10) {
seconds = '0' + seconds;
}
const restTime = {
day: day,
hour: hour,
min: min,
seconds: seconds
}
return restTime
}
二、url处理方法
1、 拼接多个params参数
queryConfig为json格式,举例:
queryConfig:{
key1: val1,
key2: val2
},
经过处理的_str为:key1=val1&key2=val2
这个方法一般适用于拼接多个参数到url上的时候
function jointParams (queryConfig) {
var _str = ''
for (var o in queryConfig) {
if (queryConfig[o] != -1) {
_str += o + '=' + queryConfig[o] + '&'
}
}
_str = _str.substring(0, _str.length - 1)
return _str
}
2、获取url中的参数
这个方法返回的data为json格式,举例:
如果url为
id=1&page=2&demo=xxx
那么返回的data为:
data :{
id: 1,
page: 2,
demo: xxx
}
/**
*@description 字符串转json
* @param str key1=val1&key2=val2
* @returns {key1:val1, key2:val2}
*/
const getUrlParams = (str) => {
let query = {};
const params = str.split("&");
params.forEach((p) => {
const items = p.split("=");
if (items.length == 2) {
query[items[0]] = decodeURIComponent(items[1]);
}
});
return query;
};
三、移动端与原生之间的环境判断
1、 判断是否为ios端访问(一般用于移动端开发与ios有交互的时候)
function _IsIOS () {
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
return true
} else {
return false
}
}
2、 判断是否为android端访问(一般用于移动端开发与安卓有交互的时候)
function _IsAndroid () {
if (/(Android|Adr)/i.test(navigator.userAgent)) {
return true
} else {
return false
}
}
3、判断是否移动端
function isMobile () {
if(/Android|webOS|iPhone|iPad|BlackBerry/i.test(navigator.userAgent)) {
return true;
} else {
return false;
}
}
4、判断是否在微信内
function isWeixin () {
var ua = navigator.userAgent.toLowerCase();
return ua.match(/MicroMessenger/i) == "micromessenger";
};
四、验证身份证号是否合法(这种方式是严格验证,会验证最后一位校验位是否正确)
function isCardNo (num) {
num = num.toUpperCase();
// 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X');
return false;
}
// 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
// 下面分别分析出生日期和校验位
var len, re;
len = num.length;
if (len == 15) {
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
var arrSplit = num.match(re);
// 检查生日日期是否正确
var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) {
alert('输入的身份证号里出生日期不对!');
return false;
} else {
// 将15位身份证转成18位
// 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
for (i = 0; i < 17; i++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
num += arrCh[nTemp % 11];
return true;
}
}
if (len == 18) {
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = num.match(re);
// 检查生日日期是否正确
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) {
// alert(dtmBirth.getYear());
// alert(arrSplit[2]);
alert('输入的身份证号里出生日期不对!');
return false;
}
else {
// 检验18位身份证的校验码是否正确。
// 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
for (i = 0; i < 17; i++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != num.substr(17, 1)) {
alert('18位身份证的校验码不正确!');
return false;
}
return true;
}
}
return false;
},
五、验证手机号是否合法
function verify_phone_number (mobile){
if (!(/^[1][0-9]{10}$/.test(mobile))) {
alert('手机号错误,请重新输入');
return false;
} else {
return true;
}
}