22 lines
751 B
TypeScript
22 lines
751 B
TypeScript
/**
|
|
* Format a time duration like `HH:MM:SS.mmm`.
|
|
*
|
|
* @param durationMs time duration in milliseconds.
|
|
* @return formatted time string.
|
|
*/
|
|
export default function formatDuration(durationMs: number): string {
|
|
const isNegative = durationMs < 0;
|
|
if (isNegative) durationMs = -durationMs;
|
|
|
|
const hours = Math.floor(durationMs / 3600000);
|
|
const minutes = Math.floor((durationMs % 3600000) / 60000);
|
|
const seconds = Math.floor((durationMs % 60000) / 1000);
|
|
const milliseconds = Math.floor(durationMs % 1000);
|
|
|
|
return (isNegative ? '-' : '') +
|
|
`${hours.toString().padStart(2, '0')}:` +
|
|
`${minutes.toString().padStart(2, '0')}:` +
|
|
`${seconds.toString().padStart(2, '0')}.` +
|
|
`${milliseconds.toString().padStart(3, '0')}`;
|
|
}
|