/** * 时间格式化工具——统一处理 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}`; }