// 导入 Cocos Creator 核心模块 const { Director, director } = cc; /** 时间工具 */ const TimeUtil = { /** * 间隔天数 * @param {number|string|Date} time1 开始时间 * @param {number|string|Date} [time2] 结束时间(可选,默认当前时间) * @returns {number} 间隔天数 */ daysBetween(time1, time2) { if (time2 == undefined) { time2 = +new Date(); } let startDate = new Date(time1).toLocaleDateString(); let endDate = new Date(time2).toLocaleDateString(); let startTime = new Date(startDate).getTime(); let endTime = new Date(endDate).getTime(); return Math.abs((startTime - endTime)) / (1000 * 60 * 60 * 24); }, /** * 间隔秒数,时间顺序无要求,最后会获取绝对值 * @param {number} time1 时间戳1(毫秒) * @param {number} time2 时间戳2(毫秒) * @returns {number} 间隔秒数(向下取整后+1) */ secsBetween(time1, time2) { let dates = Math.abs((time2 - time1)) / (1000); dates = Math.floor(dates) + 1; return dates; }, /** * 代码休眠时间 * @param {number} ms 休眠时间(秒) * @returns {Promise} Promise 对象 */ sleep(ms) { return new Promise((resolve) => { setTimeout(() => { resolve(); }, ms * 1000); }); }, /** * 等待下一帧 * @returns {Promise} Promise 对象 */ nextFrame() { return new Promise((resolve) => { requestAnimationFrame(() => { resolve(); }); }); }, /** * 将时间戳转换为指定格式的日期时间字符串 * @param {number} timestamp 要转换的时间戳,单位为毫秒 * @returns {string} 格式为 "年-月-日 时:分:秒" 的日期时间字符串 */ timeStampConvertStr(timestamp) { let date = new Date(timestamp); let formattedDate = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds(); return formattedDate; } }; /** * 时间间隔控制器,用于控制事件触发的频率 * (对应原 TS 中的静态内部类 TimeIntervalController) */ TimeUtil.TimeIntervalController = class { /** * 构造函数 * @param {number} interval 间隔时间(毫秒) */ constructor(interval) { this.lastTriggerTime = 0; this.interval = interval; } /** * 检查是否可以触发事件 * @returns {boolean} true表示可以触发,false表示不能触发 */ canTrigger() { const currentTime = Date.now(); if (currentTime - this.lastTriggerTime >= this.interval) { this.lastTriggerTime = currentTime; return true; } return false; } /** * 重置时间间隔控制器 */ reset() { this.lastTriggerTime = 0; } /** * 获取剩余时间 * @returns {number} 距离下次可以触发的剩余时间(毫秒) */ getRemainingTime() { const now = Date.now(); const elapsed = now - this.lastTriggerTime; const remaining = this.interval - elapsed; return remaining > 0 ? remaining : 0; } }; // 导出工具类,供其他文件导入 module.exports = { TimeUtil };//使用 CommonJS 模块导出方式