96 lines
2.6 KiB
TypeScript
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);
|
|
}
|