赞
踩
calendar --- 日历相关函数
Calendar 对象提供了一些可被用于准备日历数据格式化的方法。 这个类本身不执行任何格式化操作。
- # 部分源码
-
- class Calendar(object):
- """
- Base calendar class. This class doesn't do any formatting. It simply
- provides data to subclasses.
- """
-
- def __init__(self, firstweekday=0):
- self.firstweekday = firstweekday # 0 = Monday, 6 = Sunday
初始化Calendar
类时,firstweekday
是一个整数,并且默认值为 0,这个 0 用于指定一周的第一天。 0 也就是星期一,6 是星期天。
Calendar
类的实例有下列方法:
- def iterweekdays(self):
- """
- 获取一周的数字
- """
-
- def itermonthdates(self, year, month):
- """
- 获取一个月的年月日,返回的datetime.date 对象
- """
-
- def itermonthdays(self, year, month):
- """
- 获取一个月的日,不在本月的日使用 0 填充
- """
-
- def itermonthdays2(self, year, month):
- """
- 获取一个月的日,并且每日跟随着周几。不在本月的日使用 0 填充
- """
-
- def itermonthdays3(self, year, month):
- """
- 获取一个月的年月日,年月日为元祖类型。
- 例如:((2021, 11, 29), (2021, 11, 30))
- """
-
- def itermonthdays4(self, year, month):
- """
- 获取一个月的年月日,并且跟随着周几,年月日周几为元祖类型。
- 例如:((2021, 11, 29, 0), (2021, 11, 30, 1))
- """

以上 6 种方法,返回的均是生成器对象,所以要记得类型强转下,示例效果如下:
- from calendar import Calendar
-
-
- c = Calendar()
-
- print(tuple(c.iterweekdays()))
- print(tuple(c.itermonthdates(2021, 12)))
- print(tuple(c.itermonthdays(2021, 12)))
- print(tuple(c.itermonthdays2(2021, 12)))
- print(tuple(c.itermonthdays3(2021, 12)))
- print(tuple(c.itermonthdays4(2021, 12)))
-
-
- # 运行结果:
- (0, 1, 2, 3, 4, 5, 6)
- (datetime.date(2021, 11, 29), datetime.date(2021, 11, 30), datetime.date(2021, 12, 1), datetime.date(2021, 12, 2), datetime.date(2021, 12, 3), datetime.date(2021, 12, 4), datetime.date(2021, 12, 5), datetime.date(2021, 12, 6), datetime.date(2021, 12, 7), datetime.date(2021, 12, 8), datetime.date(2021, 12, 9), datetime.date(2021, 12, 10), datetime.date(2021, 12, 11), datetime.date(2021, 12, 12), datetime.date(2021, 12, 13), datetime.date(2021, 12, 14), datetime.date(2021, 12, 15), datetime.date(2021, 12, 16), datetime.date(2021, 12, 17), datetime.date(2021, 12, 18), datetime.date(2021, 12, 19), datetime.date(2021, 12, 20), datetime.date(2021, 12, 21), datetime.date(2021, 12, 22), datetime.date(2021, 12, 23), datetime.date(2021, 12, 24), datetime.date(2021, 12, 25), datetime.date(2021, 12, 26), datetime.date(2021, 12, 27), datetime.date(2021, 12, 28), datetime.date(2021, 12, 29), datetime.date(2021, 12, 30), datetime.date(2021, 12, 31), datetime.date(2022, 1, 1), datetime.date(2022, 1, 2))
- (0, 0, 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, 0, 0)
- ((0, 0), (0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 0), (7, 1), (8, 2), (9, 3), (10, 4), (11, 5), (12, 6), (13, 0), (14, 1), (15, 2), (16, 3), (17, 4), (18, 5), (19, 6), (20, 0), (21, 1), (22, 2), (23, 3), (24, 4), (25, 5), (26, 6), (27, 0), (28, 1), (29, 2), (30, 3), (31, 4), (0, 5), (0, 6))
- ((2021, 11, 29), (2021, 11, 30), (2021, 12, 1), (2021, 12, 2), (2021, 12, 3), (2021, 12, 4), (2021, 12, 5), (2021, 12, 6), (2021, 12, 7), (2021, 12, 8), (2021, 12, 9), (2021, 12, 10), (2021, 12, 11), (2021, 12, 12), (2021, 12, 13), (2021, 12, 14), (2021, 12, 15), (2021, 12, 16), (2021, 12, 17), (2021, 12, 18), (2021, 12, 19), (2021, 12, 20), (2021, 12, 21), (2021, 12, 22), (2021, 12, 23), (2021, 12, 24), (2021, 12, 25), (2021, 12, 26), (2021, 12, 27), (2021, 12, 28), (2021, 12, 29), (2021, 12, 30), (2021, 12, 31), (2022, 1, 1), (2022, 1, 2))
- ((2021, 11, 29, 0), (2021, 11, 30, 1), (2021, 12, 1, 2), (2021, 12, 2, 3), (2021, 12, 3, 4), (2021, 12, 4, 5), (2021, 12, 5, 6), (2021, 12, 6, 0), (2021, 12, 7, 1), (2021, 12, 8, 2), (2021, 12, 9, 3), (2021, 12, 10, 4), (2021, 12, 11, 5), (2021, 12, 12, 6), (2021, 12, 13, 0), (2021, 12, 14, 1), (2021, 12, 15, 2), (2021, 12, 16, 3), (2021, 12, 17, 4), (2021, 12, 18, 5), (2021, 12, 19, 6), (2021, 12, 20, 0), (2021, 12, 21, 1), (2021, 12, 22, 2), (2021, 12, 23, 3), (2021, 12, 24, 4), (2021, 12, 25, 5), (2021, 12, 26, 6), (2021, 12, 27, 0), (2021, 12, 28, 1), (2021, 12, 29, 2), (2021, 12, 30, 3), (2021, 12, 31, 4), (2022, 1, 1, 5), (2022, 1, 2, 6))
-
- Process finished with exit code 0

后续Calendar
类中又新增了 6 中实例方法,分别是处理月份和年的:
- def monthdatescalendar(self, year, month):
- """
- 返回一个月的年月日,并且分割成四个周,使用的datetime.date 对象
- 例如:[
- [datetime.date(2021, 11, 29), datetime.date(2021, 11, 30), datetime.date(2021, 12, 1), datetime.date(2021, 12, 2), datetime.date(2021, 12, 3), datetime.date(2021, 12, 4), datetime.date(2021, 12, 5)],
- [datetime.date(2021, 12, 6), datetime.date(2021, 12, 7), datetime.date(2021, 12, 8), datetime.date(2021, 12, 9), datetime.date(2021, 12, 10), datetime.date(2021, 12, 11), datetime.date(2021, 12, 12)],
- [datetime.date(2021, 12, 13), datetime.date(2021, 12, 14), datetime.date(2021, 12, 15), datetime.date(2021, 12, 16), datetime.date(2021, 12, 17), datetime.date(2021, 12, 18), datetime.date(2021, 12, 19)],
- [datetime.date(2021, 12, 20), datetime.date(2021, 12, 21), datetime.date(2021, 12, 22), datetime.date(2021, 12, 23), datetime.date(2021, 12, 24), datetime.date(2021, 12, 25), datetime.date(2021, 12, 26)],
- [datetime.date(2021, 12, 27), datetime.date(2021, 12, 28), datetime.date(2021, 12, 29), datetime.date(2021, 12, 30), datetime.date(2021, 12, 31), datetime.date(2022, 1, 1), datetime.date(2022, 1, 2)]
- ]
- """
-
- def monthdays2calendar(self, year, month):
- """
- 返回一个月的天和周几,并且分割成四个周,不在本月的日使用 0 填充。
- 例如:[
- [(0, 0), (0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)],
- [(6, 0), (7, 1), (8, 2), (9, 3), (10, 4), (11, 5), (12, 6)],
- [(13, 0), (14, 1), (15, 2), (16, 3), (17, 4), (18, 5), (19, 6)],
- [(20, 0), (21, 1), (22, 2), (23, 3), (24, 4), (25, 5), (26, 6)],
- [(27, 0), (28, 1), (29, 2), (30, 3), (31, 4), (0, 5), (0, 6)]
- ]
- """
-
- def monthdayscalendar(self, year, month):
- """
- 返回一个月的天,并且分割成四个周,不在本月的日使用 0 填充。
- 例如:[
- [0, 0, 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, 0, 0]
- ]
- """
-
- def yeardatescalendar(self, year, width=3):
- """
- 返回的值是一个列表,列表是月份组成的行。每一行包含了最多 width 个月(默认为3)。
- 每一天使用 datetime.date 对象。
- """
-
- def yeardays2calendar(self, year, width=3):
- """
- 返回的值是一个列表,列表的元素是由表示日期的数字和表示星期几的数字组成的元组。
- 不在这个月的日子为0。
- """
-
- def yeardayscalendar(self, year, width=3):
- """
- 返回的值是一个列表,周列表的元素是表示日期天的数字。不在这个月的日子为0。
- """

- from calendar import Calendar
-
-
- c = Calendar()
-
- print(c.monthdayscalendar(2021, 12))
- print(c.monthdatescalendar(2021, 12))
- print(c.monthdays2calendar(2021, 12))
-
-
- # 运行结果
- [
- [0, 0, 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, 0, 0]
- ]
- ---
- [
- [datetime.date(2021, 11, 29), datetime.date(2021, 11, 30), datetime.date(2021, 12, 1), datetime.date(2021, 12, 2), datetime.date(2021, 12, 3), datetime.date(2021, 12, 4), datetime.date(2021, 12, 5)],
- [datetime.date(2021, 12, 6), datetime.date(2021, 12, 7), datetime.date(2021, 12, 8), datetime.date(2021, 12, 9), datetime.date(2021, 12, 10), datetime.date(2021, 12, 11), datetime.date(2021, 12, 12)],
- [datetime.date(202

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。