Seconds as a human duration
Turn a second count into days, hours, minutes, and seconds.
18th August 2026
from typing import List
def human_duration(secs: int) -> str:
if secs < 0:
return 'unknown'
if secs == 0:
return 'None'
parts: List[str] = []
days, secs = divmod(secs, 86400)
if days:
parts.append(f'{days} day{"s" if days != 1 else ""}')
hours, secs = divmod(secs, 3600)
if hours:
parts.append(f'{hours} hour{"s" if hours != 1 else ""}')
minutes, secs = divmod(secs, 60)
if minutes:
parts.append(f'{minutes} minute{"s" if minutes != 1 else ""}')
if secs or not parts:
parts.append(f'{secs} second{"s" if secs != 1 else ""}')
if len(parts) > 1:
return ', '.join(parts[:-1]) + ' & ' + parts[-1]
return parts[0]