32 lines
879 B
TypeScript
32 lines
879 B
TypeScript
type DateInput = Date | string | number | null | undefined;
|
|
|
|
const pad2 = (value: number) => String(value).padStart(2, '0');
|
|
|
|
const toDate = (input: DateInput): Date | null => {
|
|
if (input == null) return null;
|
|
|
|
if (input instanceof Date) {
|
|
return Number.isNaN(input.getTime()) ? null : input;
|
|
}
|
|
|
|
const date = new Date(input);
|
|
return Number.isNaN(date.getTime()) ? null : date;
|
|
};
|
|
|
|
/**
|
|
* Format datetime to `d-m-Y H:i` (e.g. `07-04-2026 14:05`).
|
|
* Uses local time.
|
|
*/
|
|
export const formatDateTime = (input: DateInput, fallback = '-') => {
|
|
const date = toDate(input);
|
|
if (!date) return fallback;
|
|
|
|
const day = pad2(date.getDate());
|
|
const month = pad2(date.getMonth() + 1);
|
|
const year = String(date.getFullYear());
|
|
const hours = pad2(date.getHours());
|
|
const minutes = pad2(date.getMinutes());
|
|
|
|
return `${day}-${month}-${year} ${hours}:${minutes}`;
|
|
};
|