/** 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; }