AIWROK软件时间方法集合小结
<span style="font-family: "Microsoft YaHei", Tahoma, Helvetica, SimSun, sans-serif;">AIWROK软件时间方法集合小结</span><p style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px;"></p><div style="font-family: "Microsoft YaHei", Tahoma, Helvetica, SimSun, sans-serif;"><div class="blockcode" style="overflow: hidden; padding-right: 0px; padding-bottom: 5px; padding-left: 10px; background-image: url("http://www.postbbs.com/template/dsvue_cgmvred2013/skin_img/codebg.gif"); color: rgb(102, 102, 102); zoom: 1;"><blockquote>//适用本文档ES5系统安卓 JavaScript引擎Rhino<br><br>const 时间 = {<br>/**<br>* 获取当前时间戳<br>* @returns {number} 返回当前的时间戳(毫秒)<br>* @example<br>* var timestamp = 时间.当前时间戳();<br>* printl(timestamp); // 输出类似: 1677649423000<br>*/<br>当前时间戳: function() {<br>return Date.now();<br>},<br><br>/**<br>* 格式化时间为指定格式<br>* @param {Date|number|string} date 要格式化的日期,可以是Date对象、时间戳或日期字符串<br>* @param {string} format 输出格式,默认为"YYYY-MM-DD HH:mm:ss"<br>* @returns {string|null} 成功返回格式化后的时间字符串,失败返回null<br>* @example<br>* // 示例1:格式化当前时间<br>* var now = new Date();<br>* var str = 时间.格式化(now);<br>* printl(str); // 输出: "2024-01-20 15:30:45"<br>*<br>* // 示例2:自定义格式<br>* var str = 时间.格式化(new Date(), "YYYY年MM月DD日");<br>* printl(str); // 输出: "2024年01月20日"<br>*/<br>格式化: function(date, format) {<br>try {<br>// 设置默认格式<br>format = format || "YYYY-MM-DD HH:mm:ss";<br><br>// 参数验证<br>if (!date) {<br>console.error("[时间.格式化] 错误:date参数未定义");<br>return null;<br>}<br><br>// 转换为Date对象<br>var dateObj;<br>if (date instanceof Date) {<br>dateObj = date;<br>} else if (typeof date === 'number' || typeof date === 'string') {<br>dateObj = new Date(date);<br>} else {<br>console.error("[时间.格式化] 错误:date参数类型不正确");<br>return null;<br>}<br><br>// 验证日期是否有效<br>if (isNaN(dateObj.getTime())) {<br>console.error("[时间.格式化] 错误:无效的日期");<br>return null;<br>}<br><br>// 格式化函数<br>var formatMap = {<br>YYYY: dateObj.getFullYear(),<br>MM: String(dateObj.getMonth() + 1).padStart(2, '0'),<br>DD: String(dateObj.getDate()).padStart(2, '0'),<br>HH: String(dateObj.getHours()).padStart(2, '0'),<br>mm: String(dateObj.getMinutes()).padStart(2, '0'),<br>ss: String(dateObj.getSeconds()).padStart(2, '0'),<br>SSS: String(dateObj.getMilliseconds()).padStart(3, '0')<br>};<br><br>return format.replace(/YYYY|MM|DD|HH|mm|ss|SSS/g, function(match) {<br>return formatMap;<br>});<br>} catch (error) {<br>console.error("[时间.格式化] 错误:" + error);<br>return null;<br>}<br>},<br><br>/**<br>* 计算两个日期之间的时间差<br>* @param {Date|number|string} date1 第一个日期<br>* @param {Date|number|string} date2 第二个日期<br>* @param {string} unit 返回的时间单位,可选值:years, months, days, hours, minutes, seconds, milliseconds<br>* @returns {number|null} 成功返回时间差,失败返回null<br>* @example<br>* // 示例1:计算两个日期之间的天数差<br>* var date1 = new Date('2024-01-01');<br>* var date2 = new Date('2024-02-01');<br>* var diff = 时间.时间差(date1, date2, 'days');<br>* printl(diff); // 输出: 31<br>*<br>* // 示例2:计算小时差<br>* var diff = 时间.时间差(date1, date2, 'hours');<br>* printl(diff); // 输出: 744<br>*/<br>时间差: function(date1, date2, unit) {<br>try {<br>// 设置默认单位<br>unit = unit || "milliseconds";<br><br>// 参数验证<br>if (!date1 || !date2) {<br>console.error("[时间.时间差] 错误:日期参数未定义");<br>return null;<br>}<br><br>// 转换为Date对象<br>var d1 = new Date(date1);<br>var d2 = new Date(date2);<br><br>// 验证日期是否有效<br>if (isNaN(d1.getTime()) || isNaN(d2.getTime())) {<br>console.error("[时间.时间差] 错误:无效的日期");<br>return null;<br>}<br><br>// 计算毫秒差值<br>var diff = Math.abs(d2.getTime() - d1.getTime());<br><br>// 根据单位转换<br>var conversions = {<br>milliseconds: 1,<br>seconds: 1000,<br>minutes: 1000 * 60,<br>hours: 1000 * 60 * 60,<br>days: 1000 * 60 * 60 * 24,<br>months: 1000 * 60 * 60 * 24 * 30.436875, // 平均每月天数<br>years: 1000 * 60 * 60 * 24 * 365.25 // 平均每年天数<br>};<br><br>if (!conversions) {<br>console.error("[时间.时间差] 错误:无效的时间单位");<br>return null;<br>}<br><br>return Math.floor(diff / conversions);<br>} catch (error) {<br>console.error("[时间.时间差] 错误:" + error);<br>return null;<br>}<br>}<br>};<br><br>// 示例1:获取当前时间戳<br>var timestamp = 时间.当前时间戳();<br>printl("当前时间戳:", timestamp);<br><br>// 示例2:格式化当前时间<br>var now = new Date();<br>var formattedDate = 时间.格式化(now);<br>printl("格式化当前时间:", formattedDate);<br><br>// 示例3:自定义格式化<br>var customFormat = 时间.格式化(now, "YYYY年MM月DD日 HH时mm分ss秒");<br>printl("自定义格式:", customFormat);<br><br>// 示例4:计算时间差<br>var date1 = new Date('2024-01-01');<br>var date2 = new Date('2024-02-01');<br>var daysDiff = 时间.时间差(date1, date2, 'days');<br>printl("相差天数:", daysDiff);<br><br>var hoursDiff = 时间.时间差(date1, date2, 'hours');<br>printl("相差小时:", hoursDiff);</blockquote></div><ne-clipboard data="%7B%22type%22%3A%22fragment%22%2C%22name%22%3A%22%23fragment%22%2C%22children%22%3A%5B%7B%22type%22%3A%22element%22%2C%22id%22%3A%2216073b7f%22%2C%22name%22%3A%22h3%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf083c428%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%221.%20%E5%9F%BA%E7%A1%80%E6%97%B6%E9%97%B4%E8%8E%B7%E5%8F%96%E6%96%B9%E6%B3%95%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue7dc7ccf%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22gCYPw%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22%2F**%5Cn%20*%20%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4%E6%88%B3%5Cn%20*%2F%5Cn%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4%E6%88%B3%3A%20function()%20%7B%5Cn%20%20%20%20return%20Date.now()%3B%5Cn%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Afalse%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22One%20Dark%20Pro%22%2C%22customStyle%22%3A%5B%5D%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf545d049%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2ce0a679%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E6%98%AF%E6%9C%80%E5%9F%BA%E7%A1%80%E7%9A%84%E6%96%B9%E6%B3%95%EF%BC%8C%E8%BF%94%E5%9B%9E%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4%E7%9A%84%E6%AF%AB%E7%A7%92%E7%BA%A7%E6%97%B6%E9%97%B4%E6%88%B3%E3%80%82%E5%B8%B8%E7%94%A8%E4%BA%8E%E8%AE%B0%E5%BD%95%E6%97%B6%E9%97%B4%E7%82%B9%E6%88%96%E8%AE%A1%E7%AE%97%E6%97%B6%E9%97%B4%E5%B7%AE%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u11a006b9%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22Q3N6J%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22plain%22%2C%22code%22%3A%22%2F**%5Cn%20*%20%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4%5Cn%20*%2F%5Cn%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4%3A%20function()%20%7B%5Cn%20%20%20%20return%20new%20Date()%3B%5Cn%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Afalse%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22One%20Dark%20Pro%22%2C%22customStyle%22%3A%5B%5D%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u52f05015%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3fdb334c%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%94%E5%9B%9E%E5%BD%93%E5%89%8D%E7%9A%84Date%E5%AF%B9%E8%B1%A1%EF%BC%8C%E5%8F%AF%E4%BB%A5%E7%94%A8%E4%BA%8E%E5%90%8E%E7%BB%AD%E7%9A%84%E6%97%B6%E9%97%B4%E5%A4%84%E7%90%86%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22e1134e58%22%2C%22name%22%3A%22h3%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5d68128b%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%222.%20%E6%97%B6%E9%97%B4%E7%AD%89%E5%BE%85%E5%92%8C%E4%BC%91%E7%9C%A0%E6%96%B9%E6%B3%95%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ub98f22f1%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22SRA3J%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22javascript%22%2C%22code%22%3A%22%2F**%5Cn%20*%20%E4%BC%91%E7%9C%A0%E6%8C%87%E5%AE%9A%E7%9A%84%E6%AF%AB%E7%A7%92%E6%95%B0%EF%BC%88%E5%90%8C%E6%AD%A5%E6%96%B9%E5%BC%8F%EF%BC%89%5Cn%20*%2F%5Cn%E4%BC%91%E7%9C%A0%3A%20function(ms)%20%7B%5Cn%20%20try%20%7B%5Cn%20%20%20%20%2F%2F%20%E5%8F%82%E6%95%B0%E9%AA%8C%E8%AF%81%5Cn%20%20%20%20if%20(typeof%20ms%20!%3D%3D%20'number'%20%7C%7C%20ms%20%3C%200)%20%7B%5Cn%20%20%20%20%20%20console.error(%5C%22%5B%E6%97%B6%E9%97%B4.%E4%BC%91%E7%9C%A0%5D%20%E9%94%99%E8%AF%AF%EF%BC%9A%E5%8F%82%E6%95%B0%E5%BF%85%E9%A1%BB%E6%98%AF%E9%9D%9E%E8%B4%9F%E6%95%B0%5C%22)%3B%5Cn%20%20%20%20%20%20return%3B%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20var%20start%20%3D%20new%20Date().getTime()%3B%5Cn%20%20%20%20while%20(new%20Date().getTime()%20%3C%20start%20%2B%20ms)%20%7B%5Cn%20%20%20%20%20%20%2F%2F%20%E7%A9%BA%E5%BE%AA%E7%8E%AF%E7%AD%89%E5%BE%85%5Cn%20%20%20%20%7D%5Cn%20%20%7D%20catch%20(error)%20%7B%5Cn%20%20%20%20console.error(%5C%22%5B%E6%97%B6%E9%97%B4.%E4%BC%91%E7%9C%A0%5D%20%E9%94%99%E8%AF%AF%EF%BC%9A%5C%22%20%2B%20error)%3B%5Cn%20%20%7D%5Cn%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Afalse%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22One%20Dark%20Pro%22%2C%22customStyle%22%3A%5B%5D%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3812d200%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9423f482%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E5%90%8C%E6%AD%A5%E7%9A%84%E4%BC%91%E7%9C%A0%E6%96%B9%E6%B3%95%EF%BC%8C%E4%BC%9A%E9%98%BB%E5%A1%9E%E6%89%A7%E8%A1%8C%E6%8C%87%E5%AE%9A%E7%9A%84%E6%AF%AB%E7%A7%92%E6%95%B0%E3%80%82%E6%B3%A8%E6%84%8F%EF%BC%9A%E8%BF%99%E4%BC%9A%E9%98%BB%E5%A1%9E%E4%B8%BB%E7%BA%BF%E7%A8%8B%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ubf0c93f9%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22mtDVc%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22javascript%22%2C%22code%22%3A%22%2F**%5Cn%20*%20%E7%AD%89%E5%BE%85%E6%8C%87%E5%AE%9A%E6%97%B6%E9%97%B4%EF%BC%88%E5%BC%82%E6%AD%A5%E6%96%B9%E5%BC%8F%EF%BC%89%5Cn%20*%2F%5Cn%E7%AD%89%E5%BE%85%E6%8C%87%E5%AE%9A%E6%97%B6%E9%97%B4%3A%20function(ms)%20%7B%5Cn%20%20try%20%7B%5Cn%20%20%20%20if%20(typeof%20ms%20!%3D%3D%20'number'%20%7C%7C%20ms%20%3C%200)%20%7B%5Cn%20%20%20%20%20%20console.error(%5C%22%5B%E6%97%B6%E9%97%B4.%E7%AD%89%E5%BE%85%E6%8C%87%E5%AE%9A%E6%97%B6%E9%97%B4%5D%20%E9%94%99%E8%AF%AF%EF%BC%9Ams%E5%BF%85%E9%A1%BB%E6%98%AF%E9%9D%9E%E8%B4%9F%E6%95%B0%5C%22)%3B%5Cn%20%20%20%20%20%20return%20Promise.reject(%5C%22ms%E5%BF%85%E9%A1%BB%E6%98%AF%E9%9D%9E%E8%B4%9F%E6%95%B0%5C%22)%3B%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20return%20new%20Promise(function(resolve)%20%7B%5Cn%20%20%20%20%20%20setTimeout(resolve%2C%20ms)%3B%5Cn%20%20%20%20%7D)%3B%5Cn%20%20%7D%20catch%20(error)%20%7B%5Cn%20%20%20%20console.error(%5C%22%5B%E6%97%B6%E9%97%B4.%E7%AD%89%E5%BE%85%E6%8C%87%E5%AE%9A%E6%97%B6%E9%97%B4%5D%20%E9%94%99%E8%AF%AF%EF%BC%9A%5C%22%20%2B%20error)%3B%5Cn%20%20%20%20return%20Promise.reject(error)%3B%5Cn%20%20%7D%5Cn%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Afalse%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22One%20Dark%20Pro%22%2C%22customStyle%22%3A%5B%5D%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue17588be%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u0dc19a34%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E6%98%AF%E5%BC%82%E6%AD%A5%E7%89%88%E6%9C%AC%E7%9A%84%E7%AD%89%E5%BE%85%EF%BC%8C%E8%BF%94%E5%9B%9EPromise%EF%BC%8C%E4%B8%8D%E4%BC%9A%E9%98%BB%E5%A1%9E%E4%B8%BB%E7%BA%BF%E7%A8%8B%E3%80%82%E6%8E%A8%E8%8D%90%E4%BD%BF%E7%94%A8%E8%BF%99%E4%B8%AA%E6%96%B9%E6%B3%95%E8%80%8C%E4%B8%8D%E6%98%AF%22%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u7ae39844%22%2C%22name%22%3A%22code%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2682ba0d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BC%91%E7%9C%A0%22%7D%5D%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua379714f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%82%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%222cedd422%22%2C%22name%22%3A%22h3%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8d1688a8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%223.%20%E6%97%B6%E9%97%B4%E6%A0%BC%E5%BC%8F%E5%8C%96%E5%92%8C%E8%BD%AC%E6%8D%A2%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u863a3b2d%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22HxVtx%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22javascript%22%2C%22code%22%3A%22%2F**%5Cn%20*%20%E6%A0%BC%E5%BC%8F%E5%8C%96%E6%97%B6%E9%97%B4%E4%B8%BA%E6%8C%87%E5%AE%9A%E6%A0%BC%E5%BC%8F%5Cn%20*%2F%5Cn%E6%A0%BC%E5%BC%8F%E5%8C%96%3A%20function(date%2C%20format)%20%7B%5Cn%20%20try%20%7B%5Cn%20%20%20%20format%20%3D%20format%20%7C%7C%20%5C%22YYYY-MM-DD%20HH%3Amm%3Ass%5C%22%3B%5Cn%5Cn%20%20%20%20%2F%2F%20...%20%E5%8F%82%E6%95%B0%E9%AA%8C%E8%AF%81%20...%5Cn%5Cn%20%20%20%20var%20formatMap%20%3D%20%7B%5Cn%20%20%20%20%20%20YYYY%3A%20dateObj.getFullYear()%2C%5Cn%20%20%20%20%20%20MM%3A%20String(dateObj.getMonth()%20%2B%201).padStart(2%2C%20'0')%2C%5Cn%20%20%20%20%20%20DD%3A%20String(dateObj.getDate()).padStart(2%2C%20'0')%2C%5Cn%20%20%20%20%20%20HH%3A%20String(dateObj.getHours()).padStart(2%2C%20'0')%2C%5Cn%20%20%20%20%20%20mm%3A%20String(dateObj.getMinutes()).padStart(2%2C%20'0')%2C%5Cn%20%20%20%20%20%20ss%3A%20String(dateObj.getSeconds()).padStart(2%2C%20'0')%2C%5Cn%20%20%20%20%20%20SSS%3A%20String(dateObj.getMilliseconds()).padStart(3%2C%20'0')%5Cn%20%20%20%20%7D%3B%5Cn%5Cn%20%20%20%20return%20format.replace(%2FYYYY%7CMM%7CDD%7CHH%7Cmm%7Css%7CSSS%2Fg%2C%20function(match)%20%7B%5Cn%20%20%20%20%20%20return%20formatMap%5Bmatch%5D%3B%5Cn%20%20%20%20%7D)%3B%5Cn%20%20%7D%20catch%20(error)%20%7B%5Cn%20%20%20%20console.error(%5C%22%5B%E6%97%B6%E9%97%B4.%E6%A0%BC%E5%BC%8F%E5%8C%96%5D%20%E9%94%99%E8%AF%AF%EF%BC%9A%5C%22%20%2B%20error)%3B%5Cn%20%20%20%20return%20null%3B%5Cn%20%20%7D%5Cn%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Afalse%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22One%20Dark%20Pro%22%2C%22customStyle%22%3A%5B%5D%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf4e72c18%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u4a1eb99a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%AA%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E5%B0%86%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F%E5%8C%96%E4%B8%BA%E6%8C%87%E5%AE%9A%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%A0%BC%E5%BC%8F%E3%80%82%E6%94%AF%E6%8C%81%E7%9A%84%E6%A0%BC%E5%BC%8F%E6%A0%87%E8%AE%B0%EF%BC%9A%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u43d2f9cc%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u61041937%22%2C%22fid%22%3A%22u621f11e0%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc5b5eaab%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22YYYY%3A%20%E5%B9%B4%E4%BB%BD%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u7bd14fa0%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u61041937%22%2C%22fid%22%3A%22u621f11e0%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A1%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8a4a3b05%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22MM%3A%20%E6%9C%88%E4%BB%BD%EF%BC%8801-12%EF%BC%89%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u2ed4f07a%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u61041937%22%2C%22fid%22%3A%22u621f11e0%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A2%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u56fbd328%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22DD%3A%20%E6%97%A5%E6%9C%9F%EF%BC%8801-31%EF%BC%89%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u291dd02a%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u61041937%22%2C%22fid%22%3A%22u621f11e0%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A3%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7a8816bc%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22HH%3A%20%E5%B0%8F%E6%97%B6%EF%BC%8800-23%EF%BC%89%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u24946392%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u61041937%22%2C%22fid%22%3A%22u621f11e0%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A4%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22udaa408d7%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22mm%3A%20%E5%88%86%E9%92%9F%EF%BC%8800-59%EF%BC%89%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u3e46f032%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u61041937%22%2C%22fid%22%3A%22u621f11e0%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A5%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u9b5dc9f6%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22ss%3A%20%E7%A7%92%EF%BC%8800-59%EF%BC%89%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uf88193f2%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u61041937%22%2C%22fid%22%3A%22u621f11e0%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A6%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7e6bde38%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22SSS%3A%20%E6%AF%AB%E7%A7%92%EF%BC%88000-999%EF%BC%89%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22b1974e53%22%2C%22name%22%3A%22h3%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3f52601d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%224.%20%E6%97%B6%E9%97%B4%E7%BB%84%E4%BB%B6%E8%8E%B7%E5%8F%96%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0f99f38f%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22uo1ij%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22javascript%22%2C%22code%22%3A%22%E8%8E%B7%E5%8F%96%E5%B9%B4%3A%20function(date)%20%7B%5Cn%20%20try%20%7B%5Cn%20%20%20%20var%20dateObj%20%3D%20date%20%3F%20new%20Date(date)%20%3A%20new%20Date()%3B%5Cn%20%20%20%20return%20dateObj.getFullYear()%3B%5Cn%20%20%7D%20catch%20(error)%20%7B%5Cn%20%20%20%20console.error(%5C%22%5B%E6%97%B6%E9%97%B4.%E8%8E%B7%E5%8F%96%E5%B9%B4%5D%20%E9%94%99%E8%AF%AF%EF%BC%9A%5C%22%20%2B%20error)%3B%5Cn%20%20%20%20return%20null%3B%5Cn%20%20%7D%5Cn%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Afalse%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22One%20Dark%20Pro%22%2C%22customStyle%22%3A%5B%5D%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u54388c73%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3a454926%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%B1%BB%E4%BC%BC%E7%9A%84%E8%BF%98%E6%9C%89%22%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u496387df%22%2C%22name%22%3A%22code%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u94f3422f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%8E%B7%E5%8F%96%E6%9C%88%22%7D%5D%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u07e7847f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%81%22%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ue325ede6%22%2C%22name%22%3A%22code%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u38dfee4f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%8E%B7%E5%8F%96%E6%97%B6%22%7D%5D%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u08e8c77b%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%81%22%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ufe32a4f2%22%2C%22name%22%3A%22code%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u6a31d64e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%8E%B7%E5%8F%96%E5%88%86%22%7D%5D%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8489e8a3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%81%22%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u22e0c284%22%2C%22name%22%3A%22code%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub41fb3ef%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%8E%B7%E5%8F%96%E7%A7%92%22%7D%5D%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uaa2681ee%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E3%80%81%22%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u6c9af462%22%2C%22name%22%3A%22code%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u359a709f%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%8E%B7%E5%8F%96%E6%AF%AB%E7%A7%92%22%7D%5D%7D%2C%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u3b11da7e%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%96%B9%E6%B3%95%EF%BC%8C%E5%AE%83%E4%BB%AC%E9%83%BD%EF%BC%9A%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u909f98d7%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u53bf142b%22%2C%22fid%22%3A%22ubdb59e63%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ub51ce9d3%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%8E%A5%E5%8F%97%E5%8F%AF%E9%80%89%E7%9A%84%E6%97%A5%E6%9C%9F%E5%8F%82%E6%95%B0%EF%BC%8C%E4%B8%8D%E4%BC%A0%E5%88%99%E4%BD%BF%E7%94%A8%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc17b3bda%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u53bf142b%22%2C%22fid%22%3A%22ubdb59e63%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A1%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7ce917ee%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%94%E5%9B%9E%E5%AF%B9%E5%BA%94%E7%9A%84%E6%97%B6%E9%97%B4%E7%BB%84%E4%BB%B6%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uee24b83e%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u53bf142b%22%2C%22fid%22%3A%22ubdb59e63%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A2%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1ff2e266%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%8C%85%E5%90%AB%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%2249919065%22%2C%22name%22%3A%22h3%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ua68a77de%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%225.%20%E9%AB%98%E7%BA%A7%E5%8A%9F%E8%83%BD%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u91ec8dfb%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22sX2Ad%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22javascript%22%2C%22code%22%3A%22%2F**%5Cn%20*%20%E5%80%92%E8%AE%A1%E6%97%B6%E7%A7%92%5Cn%20*%2F%5Cn%E5%80%92%E8%AE%A1%E6%97%B6%E7%A7%92%3A%20function(seconds%2C%20callback%2C%20doneCallback)%20%7B%5Cn%20%20try%20%7B%5Cn%20%20%20%20var%20remainingSeconds%20%3D%20seconds%3B%5Cn%5Cn%20%20%20%20%2F%2F%20%E7%AB%8B%E5%8D%B3%E6%89%A7%E8%A1%8C%E4%B8%80%E6%AC%A1%E5%9B%9E%E8%B0%83%5Cn%20%20%20%20if%20(typeof%20callback%20%3D%3D%3D%20'function')%20%7B%5Cn%20%20%20%20%20%20callback(remainingSeconds)%3B%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20var%20intervalId%20%3D%20setInterval(function()%20%7B%5Cn%20%20%20%20%20%20remainingSeconds--%3B%5Cn%5Cn%20%20%20%20%20%20if%20(typeof%20callback%20%3D%3D%3D%20'function')%20%7B%5Cn%20%20%20%20%20%20%20%20callback(remainingSeconds)%3B%5Cn%20%20%20%20%20%20%7D%5Cn%5Cn%20%20%20%20%20%20if%20(remainingSeconds%20%3C%3D%200)%20%7B%5Cn%20%20%20%20%20%20%20%20clearInterval(intervalId)%3B%5Cn%20%20%20%20%20%20%20%20if%20(typeof%20doneCallback%20%3D%3D%3D%20'function')%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20doneCallback()%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%2C%201000)%3B%5Cn%5Cn%20%20%20%20return%20intervalId%3B%5Cn%20%20%7D%20catch%20(error)%20%7B%5Cn%20%20%20%20console.error(%5C%22%5B%E6%97%B6%E9%97%B4.%E5%80%92%E8%AE%A1%E6%97%B6%E7%A7%92%5D%20%E9%94%99%E8%AF%AF%EF%BC%9A%5C%22%20%2B%20error)%3B%5Cn%20%20%20%20return%20null%3B%5Cn%20%20%7D%5Cn%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Afalse%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22One%20Dark%20Pro%22%2C%22customStyle%22%3A%5B%5D%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u34923f60%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uc87e80e2%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E5%80%92%E8%AE%A1%E6%97%B6%E5%8A%9F%E8%83%BD%EF%BC%9A%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u89b23ee0%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u095e8a33%22%2C%22fid%22%3A%22u129e0c0d%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u7fef087d%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%AF%8F%E7%A7%92%E8%B0%83%E7%94%A8%E4%B8%80%E6%AC%A1callback%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u66eb89ab%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u095e8a33%22%2C%22fid%22%3A%22u129e0c0d%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A1%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1a0bce81%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E4%BC%A0%E5%85%A5%E5%89%A9%E4%BD%99%E7%A7%92%E6%95%B0%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u69dce541%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u095e8a33%22%2C%22fid%22%3A%22u129e0c0d%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A2%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2265fa54%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%80%92%E8%AE%A1%E6%97%B6%E7%BB%93%E6%9D%9F%E6%97%B6%E8%B0%83%E7%94%A8doneCallback%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u1cb403ff%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u095e8a33%22%2C%22fid%22%3A%22u129e0c0d%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A3%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u366d4271%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%94%E5%9B%9EintervalId%E4%BE%9B%E5%8F%96%E6%B6%88%E4%BD%BF%E7%94%A8%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u04888ef4%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22VOCrN%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22javascript%22%2C%22code%22%3A%22%2F**%5Cn%20*%20%E7%AD%89%E5%BE%85%E6%8C%87%E5%AE%9A%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%5Cn%20*%2F%5Cn%E7%AD%89%E5%BE%85%E6%8C%87%E5%AE%9A%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%3A%20function(checkFn%2C%20timeout%2C%20interval)%20%7B%5Cn%20%20try%20%7B%5Cn%20%20%20%20if%20(typeof%20checkFn%20!%3D%3D%20'function')%20%7B%5Cn%20%20%20%20%20%20console.error(%5C%22%5B%E6%97%B6%E9%97%B4.%E7%AD%89%E5%BE%85%E6%8C%87%E5%AE%9A%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%5D%20%E9%94%99%E8%AF%AF%EF%BC%9AcheckFn%E5%BF%85%E9%A1%BB%E6%98%AF%E5%87%BD%E6%95%B0%5C%22)%3B%5Cn%20%20%20%20%20%20return%20Promise.reject(%5C%22checkFn%E5%BF%85%E9%A1%BB%E6%98%AF%E5%87%BD%E6%95%B0%5C%22)%3B%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20timeout%20%3D%20timeout%20%7C%7C%205000%3B%5Cn%20%20%20%20interval%20%3D%20interval%20%7C%7C%20100%3B%5Cn%5Cn%20%20%20%20return%20new%20Promise(function(resolve%2C%20reject)%20%7B%5Cn%20%20%20%20%20%20if%20(checkFn())%20%7B%5Cn%20%20%20%20%20%20%20%20resolve()%3B%5Cn%20%20%20%20%20%20%20%20return%3B%5Cn%20%20%20%20%20%20%7D%5Cn%5Cn%20%20%20%20%20%20var%20startTime%20%3D%20Date.now()%3B%5Cn%20%20%20%20%20%20var%20intervalId%20%3D%20setInterval(function()%20%7B%5Cn%20%20%20%20%20%20%20%20if%20(Date.now()%20-%20startTime%20%3E%20timeout)%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20clearInterval(intervalId)%3B%5Cn%20%20%20%20%20%20%20%20%20%20reject(%5C%22%E7%AD%89%E5%BE%85%E8%B6%85%E6%97%B6%5C%22)%3B%5Cn%20%20%20%20%20%20%20%20%20%20return%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%5Cn%20%20%20%20%20%20%20%20if%20(checkFn())%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20clearInterval(intervalId)%3B%5Cn%20%20%20%20%20%20%20%20%20%20resolve()%3B%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%2C%20interval)%3B%5Cn%20%20%20%20%7D)%3B%5Cn%20%20%7D%20catch%20(error)%20%7B%5Cn%20%20%20%20console.error(%5C%22%5B%E6%97%B6%E9%97%B4.%E7%AD%89%E5%BE%85%E6%8C%87%E5%AE%9A%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%5D%20%E9%94%99%E8%AF%AF%EF%BC%9A%5C%22%20%2B%20error)%3B%5Cn%20%20%20%20return%20Promise.reject(error)%3B%5Cn%20%20%7D%5Cn%7D%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Afalse%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22One%20Dark%20Pro%22%2C%22customStyle%22%3A%5B%5D%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u47b3c894%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u8f9c5cd9%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E9%AB%98%E7%BA%A7%E7%9A%84%E7%AD%89%E5%BE%85%E5%8A%9F%E8%83%BD%EF%BC%9A%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u869d0d87%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u3151003d%22%2C%22fid%22%3A%22ufb848b25%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22uf700cddf%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%8E%A5%E5%8F%97%E4%B8%80%E4%B8%AA%E6%A3%80%E6%9F%A5%E5%87%BD%E6%95%B0%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ubee97970%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u3151003d%22%2C%22fid%22%3A%22ufb848b25%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A1%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5a86b638%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%AE%9A%E6%9C%9F%E6%A3%80%E6%9F%A5%E6%9D%A1%E4%BB%B6%E6%98%AF%E5%90%A6%E6%BB%A1%E8%B6%B3%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u28a3e04b%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u3151003d%22%2C%22fid%22%3A%22ufb848b25%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A2%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1469e20a%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%94%AF%E6%8C%81%E8%B6%85%E6%97%B6%E8%AE%BE%E7%BD%AE%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ud98d2ac0%22%2C%22name%22%3A%22uli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u3151003d%22%2C%22fid%22%3A%22ufb848b25%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A3%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u1cfdc906%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%94%E5%9B%9EPromise%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22c1f2e7f8%22%2C%22name%22%3A%22h3%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u370980e1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%226.%20%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86%E7%89%B9%E7%82%B9%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u8fae9cd9%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22ue6f6790b%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E6%89%80%E6%9C%89%E6%96%B9%E6%B3%95%E9%83%BD%E9%87%87%E7%94%A8%E4%BA%86%E7%BB%9F%E4%B8%80%E7%9A%84%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86%E6%A8%A1%E5%BC%8F%EF%BC%9A%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u4b35908b%22%2C%22name%22%3A%22oli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u337b6319%22%2C%22fid%22%3A%22u4a16752a%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A0%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u00291ca5%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22try-catch%20%E5%8C%85%E8%A3%B9%E4%B8%BB%E8%A6%81%E9%80%BB%E8%BE%91%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u0281ec08%22%2C%22name%22%3A%22oli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u337b6319%22%2C%22fid%22%3A%22u4a16752a%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A1%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u93241006%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%AF%A6%E7%BB%86%E7%9A%84%E5%8F%82%E6%95%B0%E9%AA%8C%E8%AF%81%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u44db89b9%22%2C%22name%22%3A%22oli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u337b6319%22%2C%22fid%22%3A%22u4a16752a%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A2%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u47f7aaec%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E7%BB%9F%E4%B8%80%E7%9A%84%E9%94%99%E8%AF%AF%E6%97%A5%E5%BF%97%E6%A0%BC%E5%BC%8F%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22uc3558f57%22%2C%22name%22%3A%22oli%22%2C%22attrs%22%3A%7B%22list%22%3A%22u337b6319%22%2C%22fid%22%3A%22u4a16752a%22%2C%22indexStyle%22%3A%7B%7D%2C%22indexType%22%3A0%2C%22parentIndex%22%3A%5B%5D%2C%22index%22%3A3%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u87334ec1%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E5%A4%B1%E8%B4%A5%E6%97%B6%E8%BF%94%E5%9B%9Enull%E6%88%96reject%20Promise%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22bd2ca544%22%2C%22name%22%3A%22h3%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u2974e707%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%227.%20%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22u373ca4a1%22%2C%22name%22%3A%22hole%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22card%22%2C%22id%22%3A%22jYMpF%22%2C%22name%22%3A%22codeblock%22%2C%22attrs%22%3A%7B%22value%22%3A%7B%22mode%22%3A%22javascript%22%2C%22code%22%3A%22%2F%2F%20%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95%5Cnvar%20now%20%3D%20%E6%97%B6%E9%97%B4.%E5%BD%93%E5%89%8D%E6%97%B6%E9%97%B4()%3B%5Cnvar%20formatted%20%3D%20%E6%97%B6%E9%97%B4.%E6%A0%BC%E5%BC%8F%E5%8C%96(now%2C%20%5C%22YYYY%E5%B9%B4MM%E6%9C%88DD%E6%97%A5%5C%22)%3B%5Cn%5Cn%2F%2F%20%E5%BC%82%E6%AD%A5%E7%AD%89%E5%BE%85%5Cn%E6%97%B6%E9%97%B4.%E7%AD%89%E5%BE%85%E6%8C%87%E5%AE%9A%E6%97%B6%E9%97%B4(1000).then(function()%20%7B%5Cn%20%20console.log(%5C%221%E7%A7%92%E5%90%8E%E6%89%A7%E8%A1%8C%5C%22)%3B%5Cn%7D)%3B%5Cn%5Cn%2F%2F%20%E5%80%92%E8%AE%A1%E6%97%B6%5Cn%E6%97%B6%E9%97%B4.%E5%80%92%E8%AE%A1%E6%97%B6%E7%A7%92(5%2C%20%5Cn%20%20%20%20%20%20%20%20function(remain)%20%7B%20console.log(remain%20%2B%20%5C%22%E7%A7%92%5C%22)%3B%20%7D%2C%5Cn%20%20%20%20%20%20%20%20function()%20%7B%20console.log(%5C%22%E5%80%92%E8%AE%A1%E6%97%B6%E7%BB%93%E6%9D%9F%5C%22)%3B%20%7D%5Cn%20%20%20%20%20%20%20)%3B%5Cn%5Cn%2F%2F%20%E7%AD%89%E5%BE%85%E6%9D%A1%E4%BB%B6%5Cn%E6%97%B6%E9%97%B4.%E7%AD%89%E5%BE%85%E6%8C%87%E5%AE%9A%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0(%5Cn%20%20function()%20%7B%20return%20%E5%B1%8F%E5%B9%95%E6%96%87%E5%AD%97.indexOf(%5C%22%E6%88%90%E5%8A%9F%5C%22)%20%3E%3D%200%3B%20%7D%2C%5Cn%20%205000%5Cn).then(function()%20%7B%5Cn%20%20console.log(%5C%22%E6%89%BE%E5%88%B0%E4%BA%86%5C%22)%3B%5Cn%7D)%3B%22%2C%22autoWrap%22%3Afalse%2C%22lineNumbers%22%3Atrue%2C%22heightLimit%22%3Atrue%2C%22collapsed%22%3Afalse%2C%22hideToolbar%22%3Afalse%2C%22name%22%3A%22%22%2C%22tabSize%22%3Anull%2C%22indentWithTab%22%3Afalse%2C%22lightLines%22%3A%5B%5D%2C%22foldLines%22%3A%5B%5D%2C%22theme%22%3A%22One%20Dark%20Pro%22%2C%22customStyle%22%3A%5B%5D%2C%22__spacing%22%3A%22both%22%7D%2C%22cardType%22%3A%22block%22%7D%2C%22cardType%22%3A%22block%22%7D%5D%7D%2C%7B%22type%22%3A%22element%22%2C%22id%22%3A%22ua44de88e%22%2C%22name%22%3A%22p%22%2C%22attrs%22%3A%7B%7D%2C%22children%22%3A%5B%7B%22type%22%3A%22text%22%2C%22id%22%3A%22u5745d4e8%22%2C%22name%22%3A%22%23text%22%2C%22attrs%22%3A%7B%7D%2C%22data%22%3A%22%E8%BF%99%E4%B8%AA%E6%97%B6%E9%97%B4%E5%B7%A5%E5%85%B7%E5%BA%93%E8%AE%BE%E8%AE%A1%E5%BE%97%E9%9D%9E%E5%B8%B8%E5%AE%9E%E7%94%A8%EF%BC%8C%E6%97%A2%E6%9C%89%E5%9F%BA%E7%A1%80%E7%9A%84%E6%97%B6%E9%97%B4%E5%A4%84%E7%90%86%E5%8A%9F%E8%83%BD%EF%BC%8C%E4%B9%9F%E6%9C%89%E9%AB%98%E7%BA%A7%E7%9A%84%E5%BC%82%E6%AD%A5%E7%AD%89%E5%BE%85%E5%8A%9F%E8%83%BD%EF%BC%8C%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86%E5%AE%8C%E5%96%84%EF%BC%8C%E4%BD%BF%E7%94%A8%E6%96%B9%E4%BE%BF%E3%80%82%E6%82%A8%E8%A7%89%E5%BE%97%E8%BF%98%E9%9C%80%E8%A6%81%E6%88%91%E8%A7%A3%E9%87%8A%E5%93%AA%E9%83%A8%E5%88%86%E6%9B%B4%E8%AF%A6%E7%BB%86%E5%90%97%EF%BC%9F%22%7D%5D%7D%5D%2C%22attrs%22%3A%7B%7D%7D" source="https%3A%2F%2Fwww.yuque.com%2Faiwork%2Fnba2pr%2Fawgruf0mhhga6fgf"></ne-clipboard><div class="lake-content" typography="classic"><h3 id="16073b7f" style="margin-top: 16px; margin-bottom: 5px; font-size: 1em; line-height: 28px;"><span class="ne-text">1. 基础时间获取方法</span></h3><pre data-language="plain" id="gCYPw" class="ne-codeblock language-plain" style="border: 1px solid rgb(232, 232, 232); border-radius: 2px; background: rgb(249, 249, 249); padding: 16px; font-size: 13px; color: rgb(89, 89, 89);"><code>/*** 获取当前时间戳
*/
当前时间戳: function() {
return Date.now();
}</code></pre><p id="uf545d049" class="ne-p" style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px; min-height: 24px;"><span class="ne-text">这是最基础的方法,返回当前时间的毫秒级时间戳。常用于记录时间点或计算时间差。</span></p><pre data-language="plain" id="Q3N6J" class="ne-codeblock language-plain" style="border: 1px solid rgb(232, 232, 232); border-radius: 2px; background: rgb(249, 249, 249); padding: 16px; font-size: 13px; color: rgb(89, 89, 89);"><code>/**
* 获取当前时间
*/
当前时间: function() {
return new Date();
}</code></pre><p id="u52f05015" class="ne-p" style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px; min-height: 24px;"><span class="ne-text">返回当前的Date对象,可以用于后续的时间处理。</span></p><h3 id="e1134e58" style="margin-top: 16px; margin-bottom: 5px; font-size: 1em; line-height: 28px;"><span class="ne-text">2. 时间等待和休眠方法</span></h3><pre data-language="javascript" id="SRA3J" class="ne-codeblock language-javascript" style="border: 1px solid rgb(232, 232, 232); border-radius: 2px; background: rgb(249, 249, 249); padding: 16px; font-size: 13px; color: rgb(89, 89, 89);"><code>/**
* 休眠指定的毫秒数(同步方式)
*/
休眠: function(ms) {
try {
// 参数验证
if (typeof ms !== 'number' || ms < 0) {
console.error("[时间.休眠] 错误:参数必须是非负数");
return;
}
var start = new Date().getTime();
while (new Date().getTime() < start + ms) {
// 空循环等待
}
} catch (error) {
console.error("[时间.休眠] 错误:" + error);
}
}</code></pre><p id="u3812d200" class="ne-p" style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px; min-height: 24px;"><span class="ne-text">这是一个同步的休眠方法,会阻塞执行指定的毫秒数。注意:这会阻塞主线程。</span></p><pre data-language="javascript" id="mtDVc" class="ne-codeblock language-javascript" style="border: 1px solid rgb(232, 232, 232); border-radius: 2px; background: rgb(249, 249, 249); padding: 16px; font-size: 13px; color: rgb(89, 89, 89);"><code>/**
* 等待指定时间(异步方式)
*/
等待指定时间: function(ms) {
try {
if (typeof ms !== 'number' || ms < 0) {
console.error("[时间.等待指定时间] 错误:ms必须是非负数");
return Promise.reject("ms必须是非负数");
}
return new Promise(function(resolve) {
setTimeout(resolve, ms);
});
} catch (error) {
console.error("[时间.等待指定时间] 错误:" + error);
return Promise.reject(error);
}
}</code></pre><p id="ue17588be" class="ne-p" style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px; min-height: 24px;"><span class="ne-text">这是异步版本的等待,返回Promise,不会阻塞主线程。推荐使用这个方法而不是</span><code class="ne-code" style="font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; background-color: rgba(0, 0, 0, 0.06); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 2px; padding-right: 2px; padding-left: 2px;"><span class="ne-text">休眠</span></code><span class="ne-text">。</span></p><h3 id="2cedd422" style="margin-top: 16px; margin-bottom: 5px; font-size: 1em; line-height: 28px;"><span class="ne-text">3. 时间格式化和转换</span></h3><pre data-language="javascript" id="HxVtx" class="ne-codeblock language-javascript" style="border: 1px solid rgb(232, 232, 232); border-radius: 2px; background: rgb(249, 249, 249); padding: 16px; font-size: 13px; color: rgb(89, 89, 89);"><code>/**
* 格式化时间为指定格式
*/
格式化: function(date, format) {
try {
format = format || "YYYY-MM-DD HH:mm:ss";
// ... 参数验证 ...
var formatMap = {
YYYY: dateObj.getFullYear(),
MM: String(dateObj.getMonth() + 1).padStart(2, '0'),
DD: String(dateObj.getDate()).padStart(2, '0'),
HH: String(dateObj.getHours()).padStart(2, '0'),
mm: String(dateObj.getMinutes()).padStart(2, '0'),
ss: String(dateObj.getSeconds()).padStart(2, '0'),
SSS: String(dateObj.getMilliseconds()).padStart(3, '0')
};
return format.replace(/YYYY|MM|DD|HH|mm|ss|SSS/g, function(match) {
return formatMap;
});
} catch (error) {
console.error("[时间.格式化] 错误:" + error);
return null;
}
}</code></pre><p id="uf4e72c18" class="ne-p" style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px; min-height: 24px;"><span class="ne-text">这个方法可以将日期格式化为指定的字符串格式。支持的格式标记:</span></p><ul class="ne-ul" style="margin-left: 14px; padding-left: 23px;"><li id="u43d2f9cc" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">YYYY: 年份</span></li><li id="u7bd14fa0" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">MM: 月份(01-12)</span></li><li id="u2ed4f07a" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">DD: 日期(01-31)</span></li><li id="u291dd02a" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">HH: 小时(00-23)</span></li><li id="u24946392" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">mm: 分钟(00-59)</span></li><li id="u3e46f032" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">ss: 秒(00-59)</span></li><li id="uf88193f2" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">SSS: 毫秒(000-999)</span></li></ul><h3 id="b1974e53" style="margin-top: 16px; margin-bottom: 5px; font-size: 1em; line-height: 28px;"><span class="ne-text">4. 时间组件获取</span></h3><pre data-language="javascript" id="uo1ij" class="ne-codeblock language-javascript" style="border: 1px solid rgb(232, 232, 232); border-radius: 2px; background: rgb(249, 249, 249); padding: 16px; font-size: 13px; color: rgb(89, 89, 89);"><code>获取年: function(date) {
try {
var dateObj = date ? new Date(date) : new Date();
return dateObj.getFullYear();
} catch (error) {
console.error("[时间.获取年] 错误:" + error);
return null;
}
}</code></pre><p id="u54388c73" class="ne-p" style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px; min-height: 24px;"><span class="ne-text">类似的还有</span><code class="ne-code" style="font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; background-color: rgba(0, 0, 0, 0.06); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 2px; padding-right: 2px; padding-left: 2px;"><span class="ne-text">获取月</span></code><span class="ne-text">、</span><code class="ne-code" style="font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; background-color: rgba(0, 0, 0, 0.06); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 2px; padding-right: 2px; padding-left: 2px;"><span class="ne-text">获取时</span></code><span class="ne-text">、</span><code class="ne-code" style="font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; background-color: rgba(0, 0, 0, 0.06); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 2px; padding-right: 2px; padding-left: 2px;"><span class="ne-text">获取分</span></code><span class="ne-text">、</span><code class="ne-code" style="font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; background-color: rgba(0, 0, 0, 0.06); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 2px; padding-right: 2px; padding-left: 2px;"><span class="ne-text">获取秒</span></code><span class="ne-text">、</span><code class="ne-code" style="font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; background-color: rgba(0, 0, 0, 0.06); border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 2px; padding-right: 2px; padding-left: 2px;"><span class="ne-text">获取毫秒</span></code><span class="ne-text">方法,它们都:</span></p><ul class="ne-ul" style="margin-left: 14px; padding-left: 23px;"><li id="u909f98d7" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">接受可选的日期参数,不传则使用当前时间</span></li><li id="uc17b3bda" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">返回对应的时间组件</span></li><li id="uee24b83e" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">包含错误处理</span></li></ul><h3 id="49919065" style="margin-top: 16px; margin-bottom: 5px; font-size: 1em; line-height: 28px;"><span class="ne-text">5. 高级功能</span></h3><pre data-language="javascript" id="sX2Ad" class="ne-codeblock language-javascript" style="border: 1px solid rgb(232, 232, 232); border-radius: 2px; background: rgb(249, 249, 249); padding: 16px; font-size: 13px; color: rgb(89, 89, 89);"><code>/**
* 倒计时秒
*/
倒计时秒: function(seconds, callback, doneCallback) {
try {
var remainingSeconds = seconds;
// 立即执行一次回调
if (typeof callback === 'function') {
callback(remainingSeconds);
}
var intervalId = setInterval(function() {
remainingSeconds--;
if (typeof callback === 'function') {
callback(remainingSeconds);
}
if (remainingSeconds <= 0) {
clearInterval(intervalId);
if (typeof doneCallback === 'function') {
doneCallback();
}
}
}, 1000);
return intervalId;
} catch (error) {
console.error("[时间.倒计时秒] 错误:" + error);
return null;
}
}</code></pre><p id="u34923f60" class="ne-p" style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px; min-height: 24px;"><span class="ne-text">这是一个倒计时功能:</span></p><ul class="ne-ul" style="margin-left: 14px; padding-left: 23px;"><li id="u89b23ee0" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">每秒调用一次callback</span></li><li id="u66eb89ab" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">传入剩余秒数</span></li><li id="u69dce541" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">倒计时结束时调用doneCallback</span></li><li id="u1cb403ff" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">返回intervalId供取消使用</span></li></ul><pre data-language="javascript" id="VOCrN" class="ne-codeblock language-javascript" style="border: 1px solid rgb(232, 232, 232); border-radius: 2px; background: rgb(249, 249, 249); padding: 16px; font-size: 13px; color: rgb(89, 89, 89);"><code>/**
* 等待指定字符出现
*/
等待指定字符出现: function(checkFn, timeout, interval) {
try {
if (typeof checkFn !== 'function') {
console.error("[时间.等待指定字符出现] 错误:checkFn必须是函数");
return Promise.reject("checkFn必须是函数");
}
timeout = timeout || 5000;
interval = interval || 100;
return new Promise(function(resolve, reject) {
if (checkFn()) {
resolve();
return;
}
var startTime = Date.now();
var intervalId = setInterval(function() {
if (Date.now() - startTime > timeout) {
clearInterval(intervalId);
reject("等待超时");
return;
}
if (checkFn()) {
clearInterval(intervalId);
resolve();
}
}, interval);
});
} catch (error) {
console.error("[时间.等待指定字符出现] 错误:" + error);
return Promise.reject(error);
}
}</code></pre><p id="u47b3c894" class="ne-p" style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px; min-height: 24px;"><span class="ne-text">这是一个高级的等待功能:</span></p><ul class="ne-ul" style="margin-left: 14px; padding-left: 23px;"><li id="u869d0d87" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">接受一个检查函数</span></li><li id="ubee97970" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">定期检查条件是否满足</span></li><li id="u28a3e04b" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">支持超时设置</span></li><li id="ud98d2ac0" data-lake-index-type="0" style="list-style-position: initial; list-style-image: initial;"><span class="ne-text">返回Promise</span></li></ul><h3 id="c1f2e7f8" style="margin-top: 16px; margin-bottom: 5px; font-size: 1em; line-height: 28px;"><span class="ne-text">6. 错误处理特点</span></h3><p id="u8fae9cd9" class="ne-p" style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px; min-height: 24px;"><span class="ne-text">所有方法都采用了统一的错误处理模式:</span></p><ol class="ne-ol" style="padding-left: 23px;"><li id="u4b35908b" data-lake-index-type="0"><span class="ne-text">try-catch 包裹主要逻辑</span></li><li id="u0281ec08" data-lake-index-type="0"><span class="ne-text">详细的参数验证</span></li><li id="u44db89b9" data-lake-index-type="0"><span class="ne-text">统一的错误日志格式</span></li><li id="uc3558f57" data-lake-index-type="0"><span class="ne-text">失败时返回null或reject Promise</span></li></ol><h3 id="bd2ca544" style="margin-top: 16px; margin-bottom: 5px; font-size: 1em; line-height: 28px;"><span class="ne-text">7. 使用示例</span></h3><pre data-language="javascript" id="jYMpF" class="ne-codeblock language-javascript" style="border: 1px solid rgb(232, 232, 232); border-radius: 2px; background: rgb(249, 249, 249); padding: 16px; font-size: 13px; color: rgb(89, 89, 89);"><code>// 基础用法
var now = 时间.当前时间();
var formatted = 时间.格式化(now, "YYYY年MM月DD日");
// 异步等待
时间.等待指定时间(1000).then(function() {
console.log("1秒后执行");
});
// 倒计时
时间.倒计时秒(5,
function(remain) { console.log(remain + "秒"); },
function() { console.log("倒计时结束"); }
);
// 等待条件
时间.等待指定字符出现(
function() { return 屏幕文字.indexOf("成功") >= 0; },
5000
).then(function() {
console.log("找到了");
});</code></pre><p id="ua44de88e" class="ne-p" style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px; min-height: 24px;"><span class="ne-text">这个时间工具库设计得非常实用,既有基础的时间处理功能,也有高级的异步等待功能,错误处理完善,使用方便。您觉得还需要我解释哪部分更详细吗?</span></p><p id="ua44de88e" class="ne-p" style="font-family: "Lucida Grande", Geneva, Verdana, Arial; font-size: 12px; min-height: 24px;"><span class="ne-text"></span></p><ignore_js_op> </ignore_js_op><ignore_js_op></ignore_js_op></div></div>
页:
[1]