20 lines
675 B
TypeScript
20 lines
675 B
TypeScript
export function formatDuration(secs: number) {
|
|
if (secs <= 0) return ""
|
|
if (secs < 60) return `${secs}s`
|
|
if (secs < 3600) {
|
|
const mins = Math.floor(secs / 60)
|
|
const remaining = secs % 60
|
|
return remaining > 0 ? `${mins}m ${remaining}s` : `${mins}m`
|
|
}
|
|
if (secs < 86400) {
|
|
const hours = Math.floor(secs / 3600)
|
|
const remaining = Math.floor((secs % 3600) / 60)
|
|
return remaining > 0 ? `${hours}h ${remaining}m` : `${hours}h`
|
|
}
|
|
if (secs < 604800) {
|
|
const days = Math.floor(secs / 86400)
|
|
return days === 1 ? "~1 day" : `~${days} days`
|
|
}
|
|
const weeks = Math.floor(secs / 604800)
|
|
return weeks === 1 ? "~1 week" : `~${weeks} weeks`
|
|
}
|