Files
2026-06-03 14:18:28 +08:00

96 lines
2.6 KiB
TypeScript

/**
* @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);
}