/** * @description 时间相关工具函数 */ /** * 格式化日期时间为指定格式 * @param date 日期对象或字符串 * @param format 格式字符串,默认为 'YYYY-MM-DD HH:mm:ss' * @returns 格式化后的日期时间字符串 */ export function formatDateTime(date: Date | string | number, format: string = 'YYYY-MM-DD HH:mm:ss'): string { if (!date) return ''; const d = new Date(date); // 检查日期是否有效 if (isNaN(d.getTime())) return ''; const year = d.getFullYear(); const month = String(d.getMonth() + 1).padStart(2, '0'); const day = String(d.getDate()).padStart(2, '0'); const hours = String(d.getHours()).padStart(2, '0'); const minutes = String(d.getMinutes()).padStart(2, '0'); const seconds = String(d.getSeconds()).padStart(2, '0'); return format .replace('YYYY', String(year)) .replace('MM', month) .replace('DD', day) .replace('HH', hours) .replace('mm', minutes) .replace('ss', seconds); } /** * 格式化 sendTime 字段,确保为 'YYYY-MM-DD HH:mm:ss' 格式 * @param sendTime sendTime 字段值 * @returns 格式化后的 sendTime 字符串 */ export function formatSendTime(sendTime: string | Date | number): string { if (!sendTime) return ''; // 如果已经是字符串格式,验证是否符合预期格式 if (typeof sendTime === 'string') { // 检查是否已经是 'YYYY-MM-DD HH:mm:ss' 格式 const dateTimeRegex = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/; if (dateTimeRegex.test(sendTime)) { return sendTime; } // 如果是其他格式的字符串,尝试解析 const parsed = new Date(sendTime); if (!isNaN(parsed.getTime())) { return formatDateTime(parsed); } return ''; } // 如果是 Date 对象或时间戳 return formatDateTime(sendTime); } /** * 验证 sendTime 格式是否正确 * @param sendTime sendTime 字段值 * @returns 是否为有效格式 */ export function isValidSendTime(sendTime: string): boolean { if (!sendTime) return false; const dateTimeRegex = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/; if (!dateTimeRegex.test(sendTime)) return false; // 进一步验证日期时间是否有效 const date = new Date(sendTime); return !isNaN(date.getTime()); } /** * 获取当前时间的 sendTime 格式 * @returns 当前时间的格式化字符串 */ export function getCurrentSendTime(): string { return formatDateTime(new Date()); } /** * 将日期时间转换为 sendTime 格式(用于表单提交前的处理) * @param dateTime 日期时间值 * @returns sendTime 格式字符串 */ export function toSendTimeFormat(dateTime: any): string { return formatSendTime(dateTime); }