35 lines
909 B
Python
35 lines
909 B
Python
from datetime import datetime, timedelta
|
|
import re
|
|
from typing import Optional
|
|
|
|
from config import config
|
|
|
|
def time_to_hour(time: timedelta) -> float:
|
|
return time.total_seconds() / 3600
|
|
|
|
def today_start() -> datetime:
|
|
td = datetime.today()
|
|
year = td.year
|
|
month = td.month
|
|
day = td.day
|
|
return datetime(year=year, month=month, day=day, hour=0)
|
|
|
|
def today_end() -> datetime:
|
|
td = datetime.today()
|
|
year = td.year
|
|
month = td.month
|
|
day = td.day
|
|
return datetime(year=year, month=month, day=day, hour=23)
|
|
|
|
|
|
def str_to_date(date: str) -> Optional[datetime]:
|
|
if date:
|
|
return datetime.strptime(date + "T00:00:00Z", config.DATETIME_FORMAT)
|
|
|
|
def format_date(date: datetime) -> datetime:
|
|
if date:
|
|
return date.strftime(config.DATETIME_FORMAT)
|
|
|
|
def parse_task_id(tag: str) -> int:
|
|
return int(re.search(r"^(?P<task_id>\d{5})", tag).group("task_id"))
|