📅  最后修改于: 2023-12-03 14:46:44.979000             🧑  作者: Mango
Python日历模块提供了许多方法来处理日期和时间。其中,yeardays2calendar()
是一个强大的方法,可以用来生成指定年份中每个月的月历。
calendar.yeardays2calendar(year, width=3)
yeardays2calendar()
方法接受两个参数:
year
:必需,表示要生成月历的年份,为一个四位数的整数。width
:可选,表示每行输出月历的个数,默认值为 3。yeardays2calendar()
方法返回一个多层列表,包含指定年份每个月的月历信息。
返回值格式示例:
[
[[(month, day), ...], ... ], # 1st week
[[(month, day), ...], ... ], # 2nd week
...
[[(month, day), ...], ... ], # last week
]
其中,每个内层列表包含一个月的日期信息,其中每个元组表示一天的日期,(month, day)
分别表示月份和日期。
下面给出一个简单的示例,演示如何使用 yeardays2calendar()
方法生成指定年份中每个月的月历信息。
# 引入日历模块
import calendar
# 指定要生成月历的年份
year = 2022
# 调用 yeardays2calendar() 方法
monthly_calendar = calendar.yeardays2calendar(year)
# 输出指定年份中每个月的月历信息
for month in monthly_calendar:
print('-' * 50)
for week in month:
for day in week:
if day[0] == month[0][0]:
# 输出月份名称和星期名称
print(f"{calendar.month_name[day[0]]} {calendar.day_abbr[day[1]]:>4}",
end=' ')
else:
# 输出日期
print(f"{day[1]:>2} ", end="")
# 换行
print()
输出结果:
--------------------------------------------------
January Sun Mon Tue Wed Thu Fri Sat
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
--------------------------------------------------
February Sun Mon Tue Wed Thu Fri Sat
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
--------------------------------------------------
March Sun Mon Tue Wed Thu Fri Sat
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
--------------------------------------------------
April Sun Mon Tue Wed Thu Fri Sat
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
--------------------------------------------------
May Sun Mon Tue Wed Thu Fri Sat
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
--------------------------------------------------
June Sun Mon Tue Wed Thu Fri Sat
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
--------------------------------------------------
July Sun Mon Tue Wed Thu Fri Sat
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
--------------------------------------------------
August Sun Mon Tue Wed Thu Fri Sat
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
--------------------------------------------------
September Sun Mon Tue Wed Thu Fri Sat
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
--------------------------------------------------
October Sun Mon Tue Wed Thu Fri Sat
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
--------------------------------------------------
November Sun Mon Tue Wed Thu Fri Sat
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
--------------------------------------------------
December Sun Mon Tue Wed Thu Fri Sat
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
上述示例中,我们首先通过 yeardays2calendar()
方法生成一个多层列表 monthly_calendar
,包含了指定年份中每个月的月历信息,然后利用嵌套循环输出其中的日期信息。此外,我们还使用了日历模块提供的 month_name
和 day_abbr
属性,打印出了月份名称和星期名称。