Files

39 lines
1.2 KiB
TypeScript

function parseDate(input: unknown): Date | null {
if (!input) return null;
// Try to parse as number (seconds) first, even if string
const num = Number(input);
if (!isNaN(num)) {
return new Date(num * 1000);
}
const date = new Date(input as string | number);
if (isNaN(date.getTime())) return null;
return date;
}
export function formatDate(input: unknown): string {
const date = parseDate(input);
if (!date) return "";
const day = date.getDate().toString().padStart(2, "0");
const month = (date.getMonth() + 1).toString().padStart(2, "0");
return `${day}/${month}`;
}
export function formatTime(input: unknown): string {
const date = parseDate(input);
if (!date) return "";
const hours = date.getHours().toString().padStart(2, "0");
const minutes = date.getMinutes().toString().padStart(2, "0");
return `${hours}:${minutes}`;
}
// Format duration (seconds) to human readable string (e.g. 1m 30s)
export function formatDuration(seconds: number | null | undefined): string {
if (!seconds) return "";
if (seconds < 60) return `${Math.round(seconds)}s`;
const m = Math.floor(seconds / 60);
const s = Math.round(seconds % 60);
return `${m}m ${s}s`;
}