(
totalSeconds: number,
options: { enableHoursWhenZero?: boolean; disableMilliseconds?: boolean } = {
enableHoursWhenZero: false,
disableMilliseconds: false,
},
)
| 25 | * @returns {string}: Formatted duration in HH:MM::SS.mm |
| 26 | */ |
| 27 | export function formatDuration( |
| 28 | totalSeconds: number, |
| 29 | options: { enableHoursWhenZero?: boolean; disableMilliseconds?: boolean } = { |
| 30 | enableHoursWhenZero: false, |
| 31 | disableMilliseconds: false, |
| 32 | }, |
| 33 | ): string { |
| 34 | const hours = Math.floor(totalSeconds / 3600) |
| 35 | const minutes = Math.floor((totalSeconds % 3600) / 60) |
| 36 | const seconds = Math.floor(totalSeconds % 60) |
| 37 | const milliseconds = Math.floor( |
| 38 | (totalSeconds - Math.floor(totalSeconds)) * 100, |
| 39 | ) |
| 40 | |
| 41 | const pad = (n: number, size = 2) => n.toString().padStart(size, '0') |
| 42 | const hoursPart = |
| 43 | (options?.enableHoursWhenZero && hours === 0) || hours !== 0 |
| 44 | ? `${pad(hours)}:` |
| 45 | : '' |
| 46 | return `${hoursPart}${pad(minutes)}:${pad(seconds)}${!options?.disableMilliseconds ? `.${pad(milliseconds)}` : ''}` |
| 47 | } |
no test coverage detected