This repository has been archived on 2024-07-28. You can view files and clone it, but cannot push or open issues or pull requests.
moderator-bot/utils/parse_timedelta.py

13 lines
514 B
Python
Raw Normal View History

2022-08-07 04:45:35 -04:00
import re
import datetime as dt
from typing import Union
def parse_timedelta(specification: str) -> Union[None, dt.timedelta]:
specification = specification.strip().replace(' ', '')
match = re.fullmatch(r'(?:(\d+)(?:d|д))?(?:(\d+)(?:h|ч))?(?:(\d+)(?:m|м))?(?:(\d+)(?:s|с))?', specification)
if match:
units = [(0 if i is None else int(i)) for i in match.groups()]
return dt.timedelta(days=units[0], hours=units[1], minutes=units[2], seconds=units[3])
else:
return None