0123zzw666's picture
rushed demo
97c8e77
import random
from datetime import datetime, timedelta, timezone
DEFAULT_DATE_FORMAT = "%Y-%m-%d"
wdays = {
"en": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday",
],
"zh": [
"ζ˜ŸζœŸδΈ€",
"星期二",
"ζ˜ŸζœŸδΈ‰",
"ζ˜ŸζœŸε››",
"ζ˜ŸζœŸδΊ”",
"ζ˜ŸζœŸε…­",
"星期ζ—₯",
],
}
def get_date_now() -> list[int]:
beijing_time = datetime.now(timezone.utc) + timedelta(hours=8)
date = beijing_time.timetuple()
date = [int(d) for d in [date.tm_year, date.tm_mon, date.tm_mday, date.tm_wday]]
return date
def get_date_rand(before_days: int = 365, after_days: int = 365) -> list[int]:
random_timedelta = timedelta(days=random.randint(-before_days, after_days))
rand_time = datetime.now(timezone.utc) + random_timedelta
date = rand_time.timetuple()
date = [int(d) for d in [date.tm_year, date.tm_mon, date.tm_mday, date.tm_wday]]
return date
def str2date(date_str, date_format: str = DEFAULT_DATE_FORMAT) -> list[int]:
time = datetime.strptime(date_str, date_format)
date = time.timetuple()
date = [int(d) for d in [date.tm_year, date.tm_mon, date.tm_mday, date.tm_wday]]
return date
def date2str(
date,
sep="-",
with_week: bool = False,
language: str = "en",
date_format: str = DEFAULT_DATE_FORMAT,
) -> str:
# YYYY-MM-DD
if isinstance(date, str):
date = str2date(date, date_format=date_format)
date_str = sep.join([f"{date[0]:04d}", f"{date[1]:02d}", f"{date[2]:02d}"])
if with_week:
wday = wdays[language][date[3]]
date_str = f"{date_str} {wday}"
return date_str
if __name__ == "__main__":
rand_date = get_date_now()
print(date2str(rand_date, with_week=True))
print(date2str(rand_date, with_week=True, language="zh"))