UNPKG

@thatcompany/ts-tool

Version:

基于TypeScript编写的工具库

170 lines 6.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Timer = void 0; const date_fns_1 = require("date-fns"); class Timer { /** * 睡眠函数 * @param {number} millis 毫秒 */ static async sleep(millis = 0) { return new Promise((resolve) => setTimeout(() => { resolve(true); }, millis)); } /** * 格式化时间 * yyyy - 四位年份 * MM - 两位月份(01-12) * dd - 两位日期(01-31) * HH - 24小时制小时(00-23) * hh - 12小时制小时(01-12) * mm - 分钟(00-59) * ss - 秒(00-59) * SSS - 毫秒(000-999) * MMMM - 月份名称(January, February, …) * A / a - AM/PM * @param time 时间 * @param formatStr 时间格式 */ static format(time = new Date(), formatStr = 'yyyy-MM-dd HH:mm:ss') { if (typeof time === 'string' || typeof time === 'number') { time = (0, date_fns_1.parseISO)('' + time); } return (0, date_fns_1.format)(time, formatStr); } /** * 计算两个时间之间的差值 * @param start 开始时间 * @param end 结束时间 * @param unit 差值单位,可以是 'ms'(毫秒)、's'(秒)、'm'(分钟)、'h'(小时)、'd'(天)、'M'(月)、'y'(年) * @returns 返回两个时间之间的差值 */ static diff(start, end, unit = 'ms') { // 处理输入为 Date 对象 if (typeof start === 'string' || typeof start === 'number') { start = (0, date_fns_1.parseISO)('' + start); } if (typeof end === 'string' || typeof end === 'number') { end = (0, date_fns_1.parseISO)('' + end); } switch (unit) { case 'ms': return (0, date_fns_1.differenceInMilliseconds)(end, start); case 's': return (0, date_fns_1.differenceInSeconds)(end, start); case 'm': return (0, date_fns_1.differenceInMinutes)(end, start); case 'h': return (0, date_fns_1.differenceInHours)(end, start); case 'd': return (0, date_fns_1.differenceInDays)(end, start); case 'M': return (0, date_fns_1.differenceInMonths)(end, start); case 'y': return (0, date_fns_1.differenceInYears)(end, start); default: return 0; } } /** * 判断某个时间是否在另一个时间之前 * @param time1 第一个时间 * @param time2 第二个时间 * @returns 如果 time1 在 time2 之前,返回 true;否则返回 false */ static isBefore(time1, time2) { if (typeof time1 === 'string' || typeof time1 === 'number') { time1 = (0, date_fns_1.parseISO)('' + time1); } if (typeof time2 === 'string' || typeof time2 === 'number') { time2 = (0, date_fns_1.parseISO)('' + time2); } return (0, date_fns_1.isBefore)(time1, time2); } /** * 判断某个时间是否在另一个时间之后 * @param time1 第一个时间 * @param time2 第二个时间 * @returns 如果 time1 在 time2 之后,返回 true;否则返回 false */ static isAfter(time1, time2) { if (typeof time1 === 'string' || typeof time1 === 'number') { time1 = (0, date_fns_1.parseISO)('' + time1); } if (typeof time2 === 'string' || typeof time2 === 'number') { time2 = (0, date_fns_1.parseISO)('' + time2); } return (0, date_fns_1.isAfter)(time1, time2); } /** * 对时间数组进行排序 * @param times 时间数组 * @returns 排序后的时间数组 */ static sort(times) { return times.sort((a, b) => (0, date_fns_1.compareAsc)((0, date_fns_1.parseISO)('' + a), (0, date_fns_1.parseISO)('' + b))); } /** * 增加指定的时间量 * @param time 时间 * @param amount 数量 * @param unit 单位,可以是 'ms'、's'、'm'、'h'、'd'、'M'、'y' * @returns 增加后的时间 */ static add(time, amount, unit) { if (typeof time === 'string' || typeof time === 'number') { time = (0, date_fns_1.parseISO)('' + time); } switch (unit) { case 'ms': return (0, date_fns_1.addMilliseconds)(time, amount); case 's': return (0, date_fns_1.addSeconds)(time, amount); case 'm': return (0, date_fns_1.addMinutes)(time, amount); case 'h': return (0, date_fns_1.addHours)(time, amount); case 'd': return (0, date_fns_1.addDays)(time, amount); case 'M': return (0, date_fns_1.addMonths)(time, amount); case 'y': return (0, date_fns_1.addYears)(time, amount); default: return time; } } /** * 减少指定的时间量 * @param time 时间 * @param amount 数量 * @param unit 单位,可以是 'ms'、's'、'm'、'h'、'd'、'M'、'y' * @returns 减少后的时间 */ static sub(time, amount, unit) { if (typeof time === 'string' || typeof time === 'number') { time = (0, date_fns_1.parseISO)('' + time); } switch (unit) { case 'ms': return (0, date_fns_1.subMilliseconds)(time, amount); case 's': return (0, date_fns_1.subSeconds)(time, amount); case 'm': return (0, date_fns_1.subMinutes)(time, amount); case 'h': return (0, date_fns_1.subHours)(time, amount); case 'd': return (0, date_fns_1.subDays)(time, amount); case 'M': return (0, date_fns_1.subMonths)(time, amount); case 'y': return (0, date_fns_1.subYears)(time, amount); default: return time; } } } exports.Timer = Timer; //# sourceMappingURL=index.js.map