File size: 778 Bytes
d1ceb73 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
from __future__ import annotations
from typing import TYPE_CHECKING
from isoduration.constants import PERIOD_PREFIX
from isoduration.formatter.checking import check_global_sign
from isoduration.formatter.formatting import format_date, format_time
if TYPE_CHECKING: # pragma: no cover
from isoduration.types import Duration
def format_duration(duration: Duration) -> str:
global_sign = check_global_sign(duration)
date_duration_str = format_date(duration.date, global_sign)
time_duration_str = format_time(duration.time, global_sign)
duration_str = f"{date_duration_str}{time_duration_str}"
sign_str = "-" if global_sign < 0 else ""
if duration_str == PERIOD_PREFIX:
return f"{PERIOD_PREFIX}0D"
return f"{sign_str}{duration_str}"
|