import { md5 } from "./MD5"; /** * 工具类 * @author 袁浩、王锡铜 */ export class Utils { private static md5Object; /** * md5方式加密字符串 */ public static md5(str: string): string { this.md5Object = this.md5Object || new md5(); return this.md5Object.hex_md5(str); } /** * 复制文本到剪贴板 */ public static copy(message: string): void { var input = document.createElement("input"); input.value = message; document.body.appendChild(input); input.select(); input.setSelectionRange(0, input.value.length), document.execCommand('Copy'); document.body.removeChild(input); } /** * 比较版本号,如果version1 > version2返回1,如果version1 < version2返回-1,否则返回0 * @param version1 * @param version2 * @returns */ public static compareVersion(version1: string, version2: string) { var arr1: any[] = version1.split('.'); var arr2: any[] = version2.split('.'); //获取最大数组长度 var maxLen = arr1.length > arr2.length ? arr1.length : arr2.length; for (let i = 0; i < maxLen; i++) { //转换数字 var p1 = arr1[i] >> 0 || 0; var p2 = arr2[i] >> 0 || 0; if (p1 > p2) { return 1 } else if (p1 < p2) { return -1 } } return 0 } /** * 判断是否是整型 */ public static isInteger(x: number): boolean { return x % 1 === 0; } /** * 判断是否是数组 * */ public static isArray(obj): boolean { return Object.prototype.toString.call(obj) === '[object Array]'; } /** * 日期格式化 * @param date 日期对象 * @param formate 例:yyyy-MM-dd hh:mm:ss S * @returns 格式化后的日期字符串 */ public static formatDate(date: Date, formate: string = "yyyy-MM-dd hh:mm:ss"): string { var milliseconds = date.getMilliseconds().toString(); while (milliseconds.length != 3) { milliseconds = "0" + milliseconds; } var o = { "M+": date.getMonth() + 1, //月份 "d+": date.getDate(), //日 "h+": date.getHours(), //小时 "m+": date.getMinutes(), //分 "s+": date.getSeconds(), //秒 "q+": Math.floor((date.getMonth() + 3) / 3), //季度 "S": milliseconds //毫秒 }; if (/(y+)/.test(formate)) formate = formate.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(formate)) formate = formate.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return formate; } /** * 格式化倒计时 * @author 王锡铜 */ public static formatCountDown(time: number, needDay: boolean = true, useCN: boolean = false): string { let ss = Math.floor(time / 1000); let day = Math.floor(ss / 3600 / 24); let h = Math.floor(ss / 3600 % 24) < 10 ? "0" + Math.floor(ss / 3600 % 24) : Math.floor(ss / 3600 % 24); let m = Math.floor(ss / 60 % 60) < 10 ? "0" + Math.floor(ss / 60 % 60) : Math.floor(ss / 60 % 60); let s = Math.floor(ss % 60) < 10 ? "0" + Math.floor(ss % 60) : Math.floor(ss % 60); let result = ""; if (day > 0) { if (needDay) { result = day + "天" + h + (useCN ? "小时" : ":") + m + (useCN ? "分钟" : ":") + s + (useCN ? "秒" : ""); } else { result = (day * 24 + Math.floor(ss / 3600 % 24)) + (useCN ? "小时" : ":") + m + (useCN ? "分钟" : ":") + s + (useCN ? "秒" : ""); } } else if (h > 0) { result = h + (useCN ? "小时" : ":") + m + (useCN ? "分钟" : ":") + s + (useCN ? "秒" : ""); } else { result = m + ((useCN ? "分钟" : ":")) + s+ (useCN ? "秒" : ""); } return result; } /** * 获取随机数(左右闭区间) * @param min 最小值 * @param max 最大值 * @author 王锡铜 */ public static random_both(min: number, max: number): number { return min + Math.round(Math.random() * (max - min)); } /** * 移除数组元素 * @param array 数组 * @param item 元素 */ public static removeArrayItem(array: any[], item: any) { var index = array.indexOf(item); (index != -1) && array.splice(index, 1); } }