|
|
|
@ -1,39 +1,39 @@ |
|
|
|
|
|
|
|
export function isNull(o) { |
|
|
|
if(o === 0 || o === "0"){ |
|
|
|
return false; |
|
|
|
} |
|
|
|
if(o == "undefined" || o == null || o == ""){ |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
if(o === 0 || o === "0"){ |
|
|
|
return false; |
|
|
|
} |
|
|
|
if(o == "undefined" || o == null || o == ""){ |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
export function isPhone(o) { |
|
|
|
if(/^1[23456789]\d{9}$/.test(o)){ |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
if(/^1[23456789]\d{9}$/.test(o)){ |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
export function isMail(o) { |
|
|
|
if(/^([a-z0-9A-Z]+[-|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$/.test(o)){ |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
if(/^([a-z0-9A-Z]+[-|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$/.test(o)){ |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
export function isNumber(value) { |
|
|
|
return !isNaN(parseFloat(value)) && isFinite(value) |
|
|
|
} |
|
|
|
export function isLetter(o) { |
|
|
|
if(/^[A-Za-z]+$/.test(o)){ |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
if(/^[A-Za-z]+$/.test(o)){ |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
export function isNumberOrLetter(o) { |
|
|
|
if(/^[A-Za-z0-9]+$/.test(o)){ |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
if(/^[A-Za-z0-9]+$/.test(o)){ |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
// 日期格式化
|
|
|
|
@ -65,7 +65,7 @@ export function parseTime(time, pattern) { |
|
|
|
s: date.getSeconds(), |
|
|
|
a: date.getDay() |
|
|
|
} |
|
|
|
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { |
|
|
|
const time_str = format.replace(new RegExp(/{(y|m|d|h|i|s|a)+}/g), (result, key) => { |
|
|
|
let value = formatObj[key] |
|
|
|
// Note: getDay() returns 0 on Sunday
|
|
|
|
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } |
|
|
|
@ -83,11 +83,11 @@ export function formatDate(time, option) { |
|
|
|
} else { |
|
|
|
time = +time |
|
|
|
} |
|
|
|
|
|
|
|
if (option) { |
|
|
|
return parseTime(time, option) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (option) { |
|
|
|
return parseTime(time, option) |
|
|
|
} |
|
|
|
|
|
|
|
const d = new Date(time) |
|
|
|
const now = Date.now() |
|
|
|
|
|
|
|
@ -117,19 +117,19 @@ export function formatDate(time, option) { |
|
|
|
} |
|
|
|
if(diff < 3600 * 24 * 365) { |
|
|
|
return ( |
|
|
|
(d.getMonth()*1 + 1) + |
|
|
|
(d.getMonth()*1 + 1) + |
|
|
|
'月' + |
|
|
|
d.getDate() + |
|
|
|
'日' |
|
|
|
) |
|
|
|
} else { |
|
|
|
return ( |
|
|
|
d.getFullYear() + |
|
|
|
'年' + |
|
|
|
(d.getMonth()*1 + 1) + |
|
|
|
'月' |
|
|
|
) |
|
|
|
} |
|
|
|
return ( |
|
|
|
d.getFullYear() + |
|
|
|
'年' + |
|
|
|
(d.getMonth()*1 + 1) + |
|
|
|
'月' |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
export function formatTime(time, option) { |
|
|
|
@ -138,29 +138,38 @@ export function formatTime(time, option) { |
|
|
|
} else { |
|
|
|
time = +time |
|
|
|
} |
|
|
|
|
|
|
|
if (option) { |
|
|
|
|
|
|
|
if (option) { |
|
|
|
return parseTime(time, option) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const d = new Date(time) |
|
|
|
const now = Date.now() |
|
|
|
|
|
|
|
const diff = (now - d) / 1000 |
|
|
|
|
|
|
|
return ( |
|
|
|
d.getFullYear() + |
|
|
|
'-' + |
|
|
|
((d.getMonth()*1 + 1) + "").padStart(2,0) + |
|
|
|
'-' + |
|
|
|
(d.getDate() + '').padStart(2,0) + |
|
|
|
' ' + |
|
|
|
(d.getHours() + '').padStart(2,0) + |
|
|
|
':' + |
|
|
|
(d.getMinutes() + '').padStart(2,0) + |
|
|
|
':' + |
|
|
|
(d.getSeconds() + '').padStart(2,0) |
|
|
|
) |
|
|
|
return ( |
|
|
|
d.getFullYear() + |
|
|
|
'-' + |
|
|
|
((d.getMonth()*1 + 1) + "").padStart(2,0) + |
|
|
|
'-' + |
|
|
|
(d.getDate() + '').padStart(2,0) + |
|
|
|
' ' + |
|
|
|
(d.getHours() + '').padStart(2,0) + |
|
|
|
':' + |
|
|
|
(d.getMinutes() + '').padStart(2,0) + |
|
|
|
':' + |
|
|
|
(d.getSeconds() + '').padStart(2,0) |
|
|
|
) |
|
|
|
} |
|
|
|
|
|
|
|
export function showRangeTime(date, start=1) { |
|
|
|
if(start==1){ |
|
|
|
return date.replace(" 00:00:00", "") |
|
|
|
} |
|
|
|
if(start==2){ |
|
|
|
return date.replace(" 23:59:59", "") |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// number:要格式化的数字,
|
|
|
|
@ -170,19 +179,19 @@ export function formatTime(time, option) { |
|
|
|
// tail_add: 小数点后面数据是否添加0补足位数, 默认空字符
|
|
|
|
// null_default: 如果为空的值, 默认空字符
|
|
|
|
function numberFormat(number, decimals, tail_add="", thousands_sep, dec_point, null_default="") { |
|
|
|
number = (number + '').replace(/[^0-9+-Ee.]/g, ''); |
|
|
|
var n = !isFinite(+number) ? 0 : +number, |
|
|
|
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), |
|
|
|
sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, |
|
|
|
dec = (typeof dec_point === 'undefined') ? '.' : dec_point, |
|
|
|
s = '', |
|
|
|
toFixedFix = function (n, prec) { |
|
|
|
var k = Math.pow(10, prec); |
|
|
|
return '' + Math.round(n * k) / k; |
|
|
|
}; |
|
|
|
number = (number + '').replace(new RegExp(/[^0-9+-Ee.]/g), ''); |
|
|
|
let n = !isFinite(+number) ? 0 : +number, |
|
|
|
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), |
|
|
|
sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, |
|
|
|
dec = (typeof dec_point === 'undefined') ? '.' : dec_point, |
|
|
|
s = '', |
|
|
|
toFixedFix = function (n, prec) { |
|
|
|
let k = Math.pow(10, prec); |
|
|
|
return '' + Math.round(n * k) / k; |
|
|
|
}; |
|
|
|
|
|
|
|
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); |
|
|
|
var re = /(-?\d+)(\d{3})/; |
|
|
|
let re = new RegExp(/(-?\d+)(\d{3})/g); |
|
|
|
if(sep.length > 0){ |
|
|
|
while (re.test(s[0])) { |
|
|
|
s[0] = s[0].replace(re, "$1" + sep + "$2"); |
|
|
|
@ -211,9 +220,10 @@ export function formatNumber(number, decimals, tail_add, thousands_sep, dec_poin |
|
|
|
} |
|
|
|
// thousands_sep:千分位符号 默认空字符
|
|
|
|
export function formatPercent(number, decimals, tail_add, thousands_sep="", dec_point, null_default) { |
|
|
|
if(isNull(number) || isNull(String(number).trim().replaceAll(",", ""))){return null_default;} |
|
|
|
if(!isNumber(String(number).trim().replaceAll(",", ""))){return number;} |
|
|
|
number = String(number).trim().replaceAll(",", ""); |
|
|
|
let re = new RegExp(/,/g) |
|
|
|
if(isNull(number) || isNull(String(number).trim().replace(re, ""))){return null_default;} |
|
|
|
if(!isNumber(String(number).trim().replace(re, ""))){return number;} |
|
|
|
number = String(number).trim().replace(re, ""); |
|
|
|
let value = numberFormat(number*100, decimals, tail_add, thousands_sep, dec_point, null_default); |
|
|
|
if(value){ |
|
|
|
return value + "%"; |
|
|
|
@ -306,24 +316,24 @@ export function GetOs () { |
|
|
|
} |
|
|
|
|
|
|
|
export function getRandom(len){ |
|
|
|
let data = Math.random() + ""; |
|
|
|
let index = 2; |
|
|
|
while(data[index] == 0){ |
|
|
|
index++; |
|
|
|
} |
|
|
|
return data.substr(index, len); |
|
|
|
let data = Math.random() + ""; |
|
|
|
let index = 2; |
|
|
|
while(data[index] == 0){ |
|
|
|
index++; |
|
|
|
} |
|
|
|
return data.substr(index, len); |
|
|
|
} |
|
|
|
|
|
|
|
export function getLongRandom(len){ |
|
|
|
if(len <= 16){ |
|
|
|
return getRandom(len) |
|
|
|
} |
|
|
|
let data = Math.random() + ""; |
|
|
|
let index = 2; |
|
|
|
while(data[index] == 0){ |
|
|
|
index++; |
|
|
|
} |
|
|
|
return parseTime(Date.now(), '{y}{m}{d}{h}{i}{s}') + "" + data.substr(index, len-16); |
|
|
|
if(len <= 16){ |
|
|
|
return getRandom(len) |
|
|
|
} |
|
|
|
let data = Math.random() + ""; |
|
|
|
let index = 2; |
|
|
|
while(data[index] == 0){ |
|
|
|
index++; |
|
|
|
} |
|
|
|
return parseTime(Date.now(), '{y}{m}{d}{h}{i}{s}') + "" + data.substr(index, len-14); |
|
|
|
} |
|
|
|
|
|
|
|
export function moveInArray(array, fromIndex, toIndex) { |
|
|
|
@ -332,17 +342,17 @@ export function moveInArray(array, fromIndex, toIndex) { |
|
|
|
} |
|
|
|
|
|
|
|
export function jsonCharBigInt(s){ |
|
|
|
if(typeof s !== 'string'){ |
|
|
|
return s |
|
|
|
} |
|
|
|
let re = /([\\]?['|"]{1})(\w+[\\]?['|"]{1}[ |\n|r|\t]*:[ |\n|r|\t]*)([-]?\d{15,})/g |
|
|
|
return s.replaceAll(re, "$1$2$1$3$1") |
|
|
|
if(typeof s !== 'string'){ |
|
|
|
return s |
|
|
|
} |
|
|
|
const re = new RegExp(/([\\]?['|"]{1})(\w+[\\]?['|"]{1}[ |\n|r|\t]*:[ |\n|r|\t]*)([-]?\d{15,})/gm); |
|
|
|
return s.replace(re, "$1$2$1$3$1") |
|
|
|
} |
|
|
|
|
|
|
|
export function jsonParse(s){ |
|
|
|
if(typeof s !== 'string'){ |
|
|
|
return s |
|
|
|
} |
|
|
|
let re = /([\\]?['|"]{1})(\w+[\\]?['|"]{1}[ |\n|r|\t]*:[ |\n|r|\t]*)([-]?\d{15,})/g |
|
|
|
return JSON.parse(s.replaceAll(re, "$1$2$1$3$1")) |
|
|
|
if(typeof s !== 'string'){ |
|
|
|
return s |
|
|
|
} |
|
|
|
const re = new RegExp(/([\\]?['|"]{1})(\w+[\\]?['|"]{1}[ |\n|r|\t]*:[ |\n|r|\t]*)([-]?\d{15,})/gm); |
|
|
|
return JSON.parse(s.replace(re, "$1$2$1$3$1")) |
|
|
|
} |