1. Python 2.x 中的calendar模块
Python标准库中的calendar模块提供了一些可以用于生成和处理各种日历的函数。这些函数可以帮助我们进行日期计算和简单的数据分析。
下面介绍calendar模块中一些常用的函数和方法。
1.1 calendar.calendar(year,w=2,l=1,c=6)
该函数可以返回指定年份的日历字符串。函数的参数year是需要生成日历的年份,而参数w、l、c则可以用于指定日历的每个月份的宽度、行数和每周的起始间隔。
下面是一个例子:
import calendar
cal = calendar.calendar(2022, w=2, l=1, c=6)
print cal
运行上面的代码后,将会打印出2022年的日历。 输出结果如下所示:
2022
January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 1 2 3 4 5 6 1 2 3 4 5 6
3 4 5 6 7 8 9 7 8 9 10 11 12 13 7 8 9 10 11 12 13
10 11 12 13 14 15 16 14 15 16 17 18 19 20 14 15 16 17 18 19 20
17 18 19 20 21 22 23 21 22 23 24 25 26 27 21 22 23 24 25 26 27
24 25 26 27 28 29 30 28 28 29 30 31
31
April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 1 1 2 3 4 5
4 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 12
11 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 19
18 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 26
25 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 30
30 31
July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 1 2 3 4 5 6 7 1 2 3 4
4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 11
11 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 18
18 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 25
25 26 27 28 29 30 31 29 30 31 26 27 28 29 30
October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 1 2 3 4 5 6 1 2 3 4
3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11
10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18
17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25
24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31
31
1.2 calendar.monthrange(year, month)
该函数返回指定年份、月份的第一天是星期几以及该月份的天数。函数的参数month和year分别是需要获取信息的月份和年份。
下面是一个例子:
import calendar
# 获取2019年2月的日历
monthRange = calendar.monthrange(2019, 2)
print monthRange
运行上面的代码后,monthRange将会是一个包含两个元素的元组, 第一个元素表示第一天是星期几(0表示星期一),第二个元素表示这个月有多少天,输出结果如下所示:
(4, 28)
1.3 calendar.weekday(year, month, day)
该函数返回指定日期的星期几,其中参数year、month、day分别表示年、月、日。
下面是一个例子,它会给出 2019 年 2 月 14 日是星期几:
import calendar
dayOfWeek = calendar.weekday(2019, 2, 14)
print dayOfWeek
运行上面的代码后,dayOfWeek应该是 3(表示星期四),因为 2 月 14 日是在一周的第四天。输出结果如下所示:
3
2. 使用calendar模块生成指定月份的日历
我们可以使用calendar.month()函数来生成指定月份的日历。该函数会返回指定月份的日历字符串。
下面是一个例子:
import calendar
#打印出2022年1月的日历
cal = calendar.month(2022, 1)
print cal
运行上面的代码后, cal将会是指定月份的日历字符串,输出结果如下所示:
January 2022
Mo Tu We Th Fr Sa Su
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
3.使用calendar模块计算某个月份中的工作日数目
我们可以使用calendar模块来计算某个月份中的工作日数目。
import calendar
def get_working_days(year, month):
days = calendar.monthrange(year, month)[1]
working_days = 0
for day in range(1, days + 1):
if not calendar.weekday(year, month, day) in [5, 6]:
working_days += 1
return working_days
# 尝试一下得到当前月份的工作日数目
print get_working_days(2022, 8)
运行上面的代码后,输出结果如下所示,表示2022年9月份有21天是工作日:
21
4. 使用calendar模块来输出指定周的所有日期
我们可以使用calendar模块来输出任意一周内的所有日期。我们只需要指定这个周的任意一个日期,例如周一或周五,就可以使用calendar模块的weekday()方法来计算出这个周的所有日期。
下面是一个例子。
import calendar
import datetime
# 获取当前时间
now = datetime.datetime.now()
# 获取当前时间所在周的所有日期
for day in range(0, 7):
date = (now - datetime.timedelta(days=now.weekday()) + datetime.timedelta(days=day)).strftime('%Y-%m-%d')
print date
运行上面的代码后,将会输出这个周的全部日期,输出结果类似为:
2021-10-11
2021-10-12
2021-10-13
2021-10-14
2021-10-15
2021-10-16
2021-10-17
5. 总结
现在,我们已经了解了如何使用Python 2.x的calendar模块,生成和处理日历数据。我们看了其中一些常用的函数和方法,例如calendar()、monthrange()、weekday()函数。同时,我们还了解了如何使用这个模块来计算月份的工作日的数目,并输出指定周的所有日期的方法。
calendar模块具有多种应用场景。例如,如果您正在编写一个事件日历的应用程序或者需要进行日期计算操作等等,这个模块将会是一个非常有用的工具。