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"))