{"version":3,"file":"date.mjs","sources":["../../../../packages/utils/date.ts"],"sourcesContent":["export function isDate(date) {\n\tconst DateExp = /^[1-2][0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/\n\tif (DateExp.test(date)) {\n\t\treturn new Date(date).getDate() === Number(date.substring(date.length - 2))\n\t} else {\n\t\treturn false\n\t}\n}\nexport function isMonth(date) {\n\tconst DateExp = /^[1-2][0-9]{3}-(0[1-9]|1[0-2])$/\n\tif (DateExp.test(date)) {\n\t\treturn new Date(date + '-01').getDate() === Number(1)\n\t} else {\n\t\treturn false\n\t}\n}\nexport function isDatetime(time) {\n\tif (typeof time === 'string') {\n\t\tconst reg = /^(\\d{1,4})(-|\\/)(\\d{2})\\2(\\d{1,2}) (\\d{2}):(\\d{2}):(\\d{2})$/\n\t\tconst r = time.match(reg)\n\t\tif (r == null) return false\n\t\t// @ts-expect-error ignore\n\t\tconst d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7])\n\t\treturn d.getFullYear() === Number(r[1]) && d.getMonth() + 1 === Number(r[3]) && d.getDate() === Number(r[4]) && d.getHours() === Number(r[5]) && d.getMinutes() === Number(r[6]) && d.getSeconds() === Number(r[7])\n\t} else {\n\t\treturn true\n\t}\n}\nexport function isAnyDate(val, type) {\n\tif ((isDate(val) && type === 'date') || (isMonth(val) && type === 'month') || (isDatetime(val) && type === 'datetime')) {\n\t\treturn true\n\t} else {\n\t\treturn false\n\t}\n}\n\n/**\n * 验证输入字符串是否符合指定的日期/时间格式\n *\n * 支持的格式占位符：\n * - yyyy: 4位年份 (如: 2026)\n * - MM: 2位月份 (01-12)\n * - dd: 2位日期 (01-31)\n * - HH: 24小时制小时 (00-23)\n * - mm: 分钟 (00-59)\n * - ss: 秒 (00-59)\n *\n * @param input - 要验证的输入字符串\n * @param format - 期望的格式模板，使用上述占位符\n * @returns boolean - 如果输入符合指定格式返回true，否则返回false\n *\n * @example\n * matchFormat('2026-01-28', 'yyyy-MM-dd') // true\n * matchFormat('2026/01/28', 'yyyy/MM/dd') // true\n * matchFormat('2026-1-28', 'yyyy-MM-dd') // false (月份和日期不是2位)\n * matchFormat('2026-01-28 14:30:00', 'yyyy-MM-dd HH:mm:ss') // true\n */\nexport function matchFormat(input, format) {\n\t// 构造正则表达式，匹配严格格式\n\tconst formatRegex = {\n\t\tyyyy: '\\\\d{4}',\n\t\tMM: '(0[1-9]|1[0-2])',\n\t\tdd: '(0[1-9]|[12][0-9]|3[01])',\n\t\tHH: '([01][0-9]|2[0-3])',\n\t\tmm: '([0-5][0-9])',\n\t\tss: '([0-5][0-9])'\n\t}\n\n\t// 将 format 转换为正则表达式\n\tlet regexStr = format\n\tfor (const key in formatRegex) {\n\t\tregexStr = regexStr.replace(key, formatRegex[key])\n\t}\n\n\tconst regex = new RegExp(`^${regexStr}$`)\n\treturn regex.test(input)\n}\n\n/**\n * 将Date对象格式化为指定格式的字符串\n *\n * 支持的格式占位符：\n * - y+ : 年份，y的数量决定显示的位数（如：yyyy=2026, yy=26）\n * - M+ : 月份（1-12）\n * - d+ : 日期（1-31）\n * - h+ : 小时（0-23）\n * - m+ : 分钟（0-59）\n * - s+ : 秒（0-59）\n * - q+ : 季度（1-4）\n * - S   : 毫秒\n *\n * 注意：对于M、d、h、m、s，如果格式中指定了多位（如MM、dd），则会自动补零\n *\n * @param date - 要格式化的Date对象\n * @param fmt - 格式模板字符串\n * @returns string - 格式化后的日期字符串\n *\n * @example\n * const date = new Date(2026, 0, 28, 14, 30, 45, 123)\n * format(date, 'yyyy-MM-dd') // \"2026-01-28\"\n * format(date, 'yyyy年MM月dd日 hh:mm:ss') // \"2026年01月28日 14:30:45\"\n * format(date, 'yy/M/d') // \"26/1/28\"\n * format(date, 'yyyy-MM-dd HH:mm:ss.S') // \"2026-01-28 14:30:45.123\"\n */\nexport function format(date: Date, fmt: string) {\n\tconst o: any = {\n\t\t'M+': date.getMonth() + 1, // 月份\n\t\t'd+': date.getDate(), // 日\n\t\t'h+': date.getHours(), // 小时\n\t\t'm+': date.getMinutes(), // 分\n\t\t's+': date.getSeconds(), // 秒\n\t\t'q+': Math.floor((date.getMonth() + 3) / 3), // 季度\n\t\tS: date.getMilliseconds() // 毫秒\n\t}\n\tif (/(y+)/.test(fmt)) {\n\t\tfmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))\n\t}\n\tfor (const k in o) {\n\t\tif (new RegExp('(' + k + ')').test(fmt)) {\n\t\t\tfmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length))\n\t\t}\n\t}\n\treturn fmt\n}\n"],"names":["format"],"mappings":"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"}