trptk/lib/duration.ts
2026-02-24 17:14:07 +01:00

22 lines
816 B
TypeScript

/** Parse "m:ss" or "h:mm:ss" string to total seconds. Returns 0 on failure. */
export function parseDuration(duration?: string): number {
if (!duration) return 0;
const parts = duration.split(":").map(Number);
if (parts.some(isNaN)) return 0;
if (parts.length === 3) return parts[0] * 3600 + parts[1] * 60 + parts[2];
if (parts.length === 2) return parts[0] * 60 + parts[1];
return parts[0] || 0;
}
/** Convert seconds to ISO 8601 duration string: "PT3M42S" */
export function toISO8601Duration(seconds: number): string {
if (seconds <= 0) return "";
const h = Math.floor(seconds / 3600);
const m = Math.floor((seconds % 3600) / 60);
const s = seconds % 60;
let result = "PT";
if (h > 0) result += `${h}H`;
if (m > 0) result += `${m}M`;
if (s > 0) result += `${s}S`;
return result;
}