export class FsUtils { private static unit = ["K", "M", "B", "T", "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii", "jj", "kk", "ll", "mm", "nn", "oo", "pp", "qq", "rr", "ss", "tt", "uu", "vv", "ww", "xx", "yy", "zz", "AA", "BB", "CC", "DD", "EE", "FF", "GG", "HH", "II", "JJ", "KK", "LL", "MM", "NN", "OO", "PP", "QQ", "RR", "SS", "TT", "UU", "VV", "WW", "XX", "YY", "ZZ" ]; /** * 金币格式化 * @param num */ public static moneyFormat(num: number) { if (num < 1000) { return num + ''; } let newNumStr = this.formateHugeNumberToString(num); let result = ""; let n = newNumStr.match(/^\d+(?:\.\d{0,2})?/); let numStr = n.toString(); let len = numStr.length; let dec = len % 3; let times = (len - dec) / 3; let inx = times - 1; if (dec === 0) { times--; inx--; } let dot = len - times * 3; result = numStr.slice(0, dot) + "." + numStr.slice(dot, dot + 2) + this.unit[inx]; return result; } /** * 神石数值格式化 * @param num */ public static goldFormat(num: number) { if (num < 100000) { return num + ''; } let newNumStr = this.formateHugeNumberToString(num); let result = ""; let n = newNumStr.match(/^\d+(?:\.\d{0,2})?/); let numStr = n.toString(); let len = numStr.length; let dec = len % 3; let times = (len - dec) / 3; let inx = times - 1; if (dec === 0) { times--; inx--; } let dot = len - times * 3; result = numStr.slice(0, dot) + "." + numStr.slice(dot, dot + 2) + this.unit[inx]; return result; } /** * 把巨大的数字变成string */ public static formateHugeNumberToString(value: number): string { let power10 = 0; while (value > Math.pow(10, 18)) { power10 += 10; value = Math.floor(value / Math.pow(10, 10)); } let valueStr = value + ""; for (let i = 0; i < power10; i++) { valueStr += "0"; } return valueStr; } /** * 将数值保留2位小数后格式化成金额形式 * @param num 数值(Number或者String) * @type {String} */ public static formatCurrency(num: any, length: number = 2): string { num = parseFloat(num); var result; if (num < 10000) { result = this.toFixed(num, 0); } else if (num < 100000000) { var n = num / 10000; result = this.isInteger(n) ? n.toString() + "万" : this.toFixed(n, length) + "万"; } else if (num < 1000000000000) { var n = num / 100000000; result = this.isInteger(n) ? n.toString() + "亿" : this.toFixed(n, length) + "亿"; } else { var n = num / 1000000000000; result = this.isInteger(n) ? n.toString() + "兆" : this.toFixed(n, length) + "兆"; } return result; } /** * 没有四舍五入的fix方法 */ public static toFixed(value: any, length: number): string { value = value.toString(); var pointIndex = value.lastIndexOf("."); if (pointIndex == -1) { return value; } if (length > 0) { return value.substring(0, pointIndex + length + 1); } else { return value.substring(0, pointIndex + length); } } /** * 判断是否是整型 */ public static isInteger(x: number): boolean { return x % 1 === 0; } /** * 时间格式 */ public static dateFormat(time: number): string { let dt = new Date(time); let y = dt.getFullYear(); let _m = dt.getMonth() + 1; let m = _m < 10 ? "0" + _m : _m; let _d = dt.getDate(); let d = _d < 10 ? "0" + _d : _d; let _h = dt.getHours(); let h = _h < 10 ? "0" + _h : _h; let _minutes = dt.getMinutes(); let minutes = _minutes < 10 ? "0" + _minutes : _minutes; let _s = dt.getSeconds(); let s = _s < 10 ? "0" + _s : _s; return y + "年" + m + "月" + d + "日" + " " + h + "时" + minutes + "分" + s + "秒"; } /**金币计算 */ public static formateHugeNumber(value: number): { value: number, power10: number } { let power10 = 0; while (value > Math.pow(10, 18)) { power10 += 10; value = Math.floor(value / Math.pow(10, 10)); } return { value: value, power10: power10 }; } /**超长名字格式化 */ public static beautySub(str, len) { var reg = /[\u4e00-\u9fa5]/g, //专业匹配中文 slice = str.substring(0, len), chineseCharNum = (~~(slice.match(reg) && slice.match(reg).length)), realen = slice.length * 2 - chineseCharNum; return str.substr(0, realen) + (realen < str.length ? "..." : ""); } /** * 今日的0点秒数 */ public static getTodayTime() { var date = new Date(); return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0).getTime() / 1000; } /** * 格式化倒计时 */ public static formatBattleTime(time: number): string { let day = Math.floor(time / 3600 / 24); let h = Math.floor(time / 3600 % 24) < 10 ? Math.floor(time / 3600 % 24) : Math.floor(time / 3600 % 24); let m = Math.floor(time / 60 % 60) < 10 ? Math.floor(time / 60 % 60) : Math.floor(time / 60 % 60); let s = Math.floor(time % 60) < 10 ? Math.floor(time % 60) : Math.floor(time % 60); let result = ""; if (day > 0) { result = day + "天" + h + "时" + m + "分" + s + "秒"; } else if (h > 0) { result = h + "时" + m + "分" + s + "秒"; } else if (m > 0) { result = m + "分" + s + "秒"; } else { result = s + "秒"; } return result; } }