|
|
@@ -0,0 +1,39 @@
|
|
|
+// src/utils/dateUtils.ts
|
|
|
+export function parseTime(time: string | number | Date, cFormat?: string): string {
|
|
|
+ if (arguments.length === 0) {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+
|
|
|
+ const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}';
|
|
|
+ let date: Date;
|
|
|
+
|
|
|
+ // 如果是字符串,尝试解析为 Date
|
|
|
+ if (typeof time === 'string') {
|
|
|
+ date = new Date(time);
|
|
|
+ } else if (time instanceof Date) {
|
|
|
+ date = time;
|
|
|
+ } else {
|
|
|
+ date = new Date(time * 1000); // 时间戳(毫秒)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 确保日期有效
|
|
|
+ if (isNaN(date.getTime())) {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+
|
|
|
+ // 定义映射表
|
|
|
+ const map: Record<string, string> = {
|
|
|
+ 'y': date.getFullYear().toString(),
|
|
|
+ 'm': (date.getMonth() + 1).toString().padStart(2, '0'),
|
|
|
+ 'd': date.getDate().toString().padStart(2, '0'),
|
|
|
+ 'h': date.getHours().toString().padStart(2, '0'),
|
|
|
+ 'i': date.getMinutes().toString().padStart(2, '0'),
|
|
|
+ 's': date.getSeconds().toString().padStart(2, '0'),
|
|
|
+ 'w': date.getDay().toString()
|
|
|
+ };
|
|
|
+
|
|
|
+ // 替换格式字符串中的占位符
|
|
|
+ return format.replace(/{([ymdhisw])}/g, (match, key) => {
|
|
|
+ return map[key] || match;
|
|
|
+ });
|
|
|
+}
|