Utils.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import { md5 } from "./MD5";
  2. /**
  3. * 工具类
  4. * @author 袁浩、王锡铜
  5. */
  6. export class Utils {
  7. private static md5Object;
  8. /**
  9. * md5方式加密字符串
  10. */
  11. public static md5(str: string): string {
  12. this.md5Object = this.md5Object || new md5();
  13. return this.md5Object.hex_md5(str);
  14. }
  15. /**
  16. * 复制文本到剪贴板
  17. */
  18. public static copy(message: string): void {
  19. var input = document.createElement("input");
  20. input.value = message;
  21. document.body.appendChild(input);
  22. input.select();
  23. input.setSelectionRange(0, input.value.length), document.execCommand('Copy');
  24. document.body.removeChild(input);
  25. }
  26. /**
  27. * 比较版本号,如果version1 > version2返回1,如果version1 < version2返回-1,否则返回0
  28. * @param version1
  29. * @param version2
  30. * @returns
  31. */
  32. public static compareVersion(version1: string, version2: string) {
  33. var arr1: any[] = version1.split('.');
  34. var arr2: any[] = version2.split('.');
  35. //获取最大数组长度
  36. var maxLen = arr1.length > arr2.length ? arr1.length : arr2.length;
  37. for (let i = 0; i < maxLen; i++) {
  38. //转换数字
  39. var p1 = arr1[i] >> 0 || 0;
  40. var p2 = arr2[i] >> 0 || 0;
  41. if (p1 > p2) {
  42. return 1
  43. } else if (p1 < p2) {
  44. return -1
  45. }
  46. }
  47. return 0
  48. }
  49. /**
  50. * 判断是否是整型
  51. */
  52. public static isInteger(x: number): boolean {
  53. return x % 1 === 0;
  54. }
  55. /**
  56. * 判断是否是数组
  57. * */
  58. public static isArray(obj): boolean {
  59. return Object.prototype.toString.call(obj) === '[object Array]';
  60. }
  61. /**
  62. * 日期格式化
  63. * @param date 日期对象
  64. * @param formate 例:yyyy-MM-dd hh:mm:ss S
  65. * @returns 格式化后的日期字符串
  66. */
  67. public static formatDate(date: Date, formate: string = "yyyy-MM-dd hh:mm:ss"): string {
  68. var milliseconds = date.getMilliseconds().toString();
  69. while (milliseconds.length != 3) {
  70. milliseconds = "0" + milliseconds;
  71. }
  72. var o = {
  73. "M+": date.getMonth() + 1, //月份
  74. "d+": date.getDate(), //日
  75. "h+": date.getHours(), //小时
  76. "m+": date.getMinutes(), //分
  77. "s+": date.getSeconds(), //秒
  78. "q+": Math.floor((date.getMonth() + 3) / 3), //季度
  79. "S": milliseconds //毫秒
  80. };
  81. if (/(y+)/.test(formate)) formate = formate.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  82. for (var k in o)
  83. if (new RegExp("(" + k + ")").test(formate)) formate = formate.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  84. return formate;
  85. }
  86. /**
  87. * 格式化倒计时
  88. * @author 王锡铜
  89. */
  90. public static formatCountDown(time: number, needDay: boolean = true, useCN: boolean = false): string {
  91. let ss = Math.floor(time / 1000);
  92. let day = Math.floor(ss / 3600 / 24);
  93. let h = Math.floor(ss / 3600 % 24) < 10 ? "0" + Math.floor(ss / 3600 % 24) : Math.floor(ss / 3600 % 24);
  94. let m = Math.floor(ss / 60 % 60) < 10 ? "0" + Math.floor(ss / 60 % 60) : Math.floor(ss / 60 % 60);
  95. let s = Math.floor(ss % 60) < 10 ? "0" + Math.floor(ss % 60) : Math.floor(ss % 60);
  96. let result = "";
  97. if (day > 0) {
  98. if (needDay) {
  99. result = day + "天" + h + (useCN ? "小时" : ":") + m + (useCN ? "分钟" : ":") + s + (useCN ? "秒" : "");
  100. } else {
  101. result = (day * 24 + Math.floor(ss / 3600 % 24)) + (useCN ? "小时" : ":") + m + (useCN ? "分钟" : ":") + s + (useCN ? "秒" : "");
  102. }
  103. } else if (h > 0) {
  104. result = h + (useCN ? "小时" : ":") + m + (useCN ? "分钟" : ":") + s + (useCN ? "秒" : "");
  105. } else {
  106. result = m + ((useCN ? "分钟" : ":")) + s+ (useCN ? "秒" : "");
  107. }
  108. return result;
  109. }
  110. /**
  111. * 获取随机数(左右闭区间)
  112. * @param min 最小值
  113. * @param max 最大值
  114. * @author 王锡铜
  115. */
  116. public static random_both(min: number, max: number): number {
  117. return min + Math.round(Math.random() * (max - min));
  118. }
  119. /**
  120. * 移除数组元素
  121. * @param array 数组
  122. * @param item 元素
  123. */
  124. public static removeArrayItem(array: any[], item: any) {
  125. var index = array.indexOf(item);
  126. (index != -1) && array.splice(index, 1);
  127. }
  128. }