57 lines
1.8 KiB
TypeScript
57 lines
1.8 KiB
TypeScript
/**
|
||
* 时间格式化工具——统一处理 ISO 时间戳到本地时区显示
|
||
* 避免在 UI 直接 slice ISO 字符串导致显示 UTC 时间
|
||
*/
|
||
|
||
/**
|
||
* 格式化为 YYYY-MM-DD HH:mm(本地时区)
|
||
*/
|
||
export function formatDateTime(iso?: string | null): string {
|
||
if (!iso) return '-';
|
||
const d = new Date(iso);
|
||
if (isNaN(d.getTime())) return '-';
|
||
const yyyy = d.getFullYear();
|
||
const mm = String(d.getMonth() + 1).padStart(2, '0');
|
||
const dd = String(d.getDate()).padStart(2, '0');
|
||
const hh = String(d.getHours()).padStart(2, '0');
|
||
const mi = String(d.getMinutes()).padStart(2, '0');
|
||
return `${yyyy}-${mm}-${dd} ${hh}:${mi}`;
|
||
}
|
||
|
||
/**
|
||
* 格式化为 YYYY-MM-DD(本地时区)
|
||
*/
|
||
export function formatDate(iso?: string | null): string {
|
||
if (!iso) return '-';
|
||
const d = new Date(iso);
|
||
if (isNaN(d.getTime())) return '-';
|
||
const yyyy = d.getFullYear();
|
||
const mm = String(d.getMonth() + 1).padStart(2, '0');
|
||
const dd = String(d.getDate()).padStart(2, '0');
|
||
return `${yyyy}-${mm}-${dd}`;
|
||
}
|
||
|
||
/**
|
||
* 格式化为 YYYY-MM-DD(本地日期,用于 date input / 今日筛选)
|
||
*/
|
||
export function formatLocalDate(date: Date = new Date()): string {
|
||
const yyyy = date.getFullYear();
|
||
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
||
const dd = String(date.getDate()).padStart(2, '0');
|
||
return `${yyyy}-${mm}-${dd}`;
|
||
}
|
||
|
||
/**
|
||
* 格式化为 MM-DD HH:mm(紧凑版,本地时区)
|
||
*/
|
||
export function formatDateTimeShort(iso?: string | null): string {
|
||
if (!iso) return '-';
|
||
const d = new Date(iso);
|
||
if (isNaN(d.getTime())) return '-';
|
||
const mm = String(d.getMonth() + 1).padStart(2, '0');
|
||
const dd = String(d.getDate()).padStart(2, '0');
|
||
const hh = String(d.getHours()).padStart(2, '0');
|
||
const mi = String(d.getMinutes()).padStart(2, '0');
|
||
return `${mm}-${dd} ${hh}:${mi}`;
|
||
}
|