/** * KSP time formatting helpers — 1 KSP day = 6 hours, 1 KSP year = 426 days. * Source: stock KSP config. */ const KSP_DAY_SECONDS = 6 * 3600; const KSP_YEAR_DAYS = 426; /** Format a UT value as "Y1 D001 12:34". */ export function formatKspTime(ut: number): string { const totalDays = ut / KSP_DAY_SECONDS; const year = Math.floor(totalDays / KSP_YEAR_DAYS) + 1; const day = (Math.floor(totalDays) % KSP_YEAR_DAYS) + 1; const secondsInDay = ut % KSP_DAY_SECONDS; const h = Math.floor(secondsInDay / 3600); const m = Math.floor((secondsInDay % 3600) / 60); return `Y${year} D${String(day).padStart(3, '0')} ${String(h).padStart(2, '0')}:${String(m).padStart(2, '0')}`; } /** Format a duration in seconds as a human-readable string. */ export function formatKspDuration(seconds: number): string { const abs = Math.abs(seconds); if (abs < 60) return `${Math.floor(abs)}s`; if (abs < 3600) return `${Math.floor(abs / 60)}m`; if (abs < 86400) return `${(abs / 3600).toFixed(1)}h`; if (abs < KSP_YEAR_DAYS * KSP_DAY_SECONDS) return `${(abs / 86400).toFixed(1)}d`; return `${(abs / (KSP_YEAR_DAYS * KSP_DAY_SECONDS)).toFixed(1)}y`; }