31 lines
802 B
Python
31 lines
802 B
Python
import datetime
|
|
|
|
import dateparser
|
|
import dateparser.date_parser
|
|
|
|
|
|
def parse(value: str) -> datetime.date:
|
|
if value == "today" or value == "mock":
|
|
return datetime.date.today()
|
|
elif value == "tomorrow":
|
|
return datetime.date.today() + datetime.timedelta(days=1)
|
|
elif value.endswith("-day"):
|
|
days = int(value.split("-")[0]) - 1
|
|
return datetime.date.today() + datetime.timedelta(days=days)
|
|
else:
|
|
date = dateparser.parse(value)
|
|
if date is None:
|
|
raise ValueError(value)
|
|
return date.date()
|
|
|
|
|
|
def dump(date: datetime.date) -> str:
|
|
today = datetime.date.today()
|
|
days = (date - today).days
|
|
if days == 0:
|
|
return "today"
|
|
elif days == 1:
|
|
return "tomorrow"
|
|
else:
|
|
return f"{days + 1}-day"
|