File size: 1,905 Bytes
97c8e77 |
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
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"))
|