Files
star-erp/resources/js/lib/date.ts

42 lines
1.2 KiB
TypeScript
Raw Normal View History

import { format, parseISO, isValid } from "date-fns";
/**
* (YYYY-MM-DD HH:mm:ss)
* @param dateStr ISO
* @param formatStr "yyyy-MM-dd HH:mm:ss"
* @returns
*/
export function formatDate(
dateStr: string | null | undefined,
formatStr?: string
): string {
if (!dateStr) return "-";
try {
const date = parseISO(dateStr);
if (!isValid(date)) return "-";
// 如果使用者有指定格式,則依指定格式輸出
if (formatStr) {
return format(date, formatStr);
}
// 智慧判斷:如果時間是 00:00:00 (通常代表後端僅提供日期),則僅顯示日期
const hasTime =
date.getHours() !== 0 ||
date.getMinutes() !== 0 ||
date.getSeconds() !== 0;
return format(date, hasTime ? "yyyy-MM-dd HH:mm:ss" : "yyyy-MM-dd");
} catch (e) {
return "-";
}
}
/**
* (YYYY-MM-DD)
*/
export function formatDateOnly(dateStr: string | null | undefined): string {
return formatDate(dateStr, "yyyy-MM-dd");
}