14 lines
491 B
TypeScript
14 lines
491 B
TypeScript
|
|
/**
|
||
|
|
* Format a duration between two dates as a human-readable string.
|
||
|
|
*/
|
||
|
|
export function formatDuration(start: Date, end?: Date): string {
|
||
|
|
const duration = (end ?? new Date()).getTime() - start.getTime()
|
||
|
|
const seconds = Math.floor(duration / 1000)
|
||
|
|
const minutes = Math.floor(seconds / 60)
|
||
|
|
const hours = Math.floor(minutes / 60)
|
||
|
|
|
||
|
|
if (hours > 0) return `${hours}h ${minutes % 60}m ${seconds % 60}s`
|
||
|
|
if (minutes > 0) return `${minutes}m ${seconds % 60}s`
|
||
|
|
return `${seconds}s`
|
||
|
|
}
|