当前位置:   article > 正文

python:calendar 日历相关库_python 能方便筛选年,月,周,日的日历库

python 能方便筛选年,月,周,日的日历库

calendar --- 日历相关函数

Calendar类

Calendar 对象提供了一些可被用于准备日历数据格式化的方法。 这个类本身不执行任何格式化操作。

  1. # 部分源码
  2. class Calendar(object):
  3.     """
  4.     Base calendar class. This class doesn't do any formatting. It simply
  5.     provides data to subclasses.
  6.     """
  7.     def __init__(self, firstweekday=0):
  8.         self.firstweekday = firstweekday # 0 = Monday, 6 = Sunday

初始化Calendar类时,firstweekday是一个整数,并且默认值为 0,这个 0 用于指定一周的第一天。 0 也就是星期一,6 是星期天。

Calendar类的实例有下列方法:

  1.     def iterweekdays(self):
  2.         """
  3.         获取一周的数字
  4.         """
  5.     def itermonthdates(self, year, month):
  6.         """
  7.         获取一个月的年月日,返回的datetime.date 对象
  8.         """
  9.     def itermonthdays(self, year, month):
  10.         """
  11.         获取一个月的日,不在本月的日使用 0 填充
  12.         """
  13.     def itermonthdays2(self, year, month):
  14.         """
  15.         获取一个月的日,并且每日跟随着周几。不在本月的日使用 0 填充
  16.         """
  17.     def itermonthdays3(self, year, month):
  18.         """
  19.         获取一个月的年月日,年月日为元祖类型。
  20.         例如:((2021, 11, 29), (2021, 11, 30))
  21.         """
  22.     def itermonthdays4(self, year, month):
  23.         """
  24.         获取一个月的年月日,并且跟随着周几,年月日周几为元祖类型。
  25.         例如:((2021, 11, 29, 0), (2021, 11, 30, 1))
  26.         """

以上 6 种方法,返回的均是生成器对象,所以要记得类型强转下,示例效果如下:

  1. from calendar import Calendar
  2. = Calendar()
  3. print(tuple(c.iterweekdays()))
  4. print(tuple(c.itermonthdates(202112)))
  5. print(tuple(c.itermonthdays(202112)))
  6. print(tuple(c.itermonthdays2(202112)))
  7. print(tuple(c.itermonthdays3(202112)))
  8. print(tuple(c.itermonthdays4(202112)))
  9. # 运行结果:
  10. (0123456)
  11. (datetime.date(20211129), datetime.date(20211130), datetime.date(2021121), datetime.date(2021122), datetime.date(2021123), datetime.date(2021124), datetime.date(2021125), datetime.date(2021126), datetime.date(2021127), datetime.date(2021128), datetime.date(2021129), datetime.date(20211210), datetime.date(20211211), datetime.date(20211212), datetime.date(20211213), datetime.date(20211214), datetime.date(20211215), datetime.date(20211216), datetime.date(20211217), datetime.date(20211218), datetime.date(20211219), datetime.date(20211220), datetime.date(20211221), datetime.date(20211222), datetime.date(20211223), datetime.date(20211224), datetime.date(20211225), datetime.date(20211226), datetime.date(20211227), datetime.date(20211228), datetime.date(20211229), datetime.date(20211230), datetime.date(20211231), datetime.date(202211), datetime.date(202212))
  12. (001234567891011121314151617181920212223242526272829303100)
  13. ((00), (01), (12), (23), (34), (45), (56), (60), (71), (82), (93), (104), (115), (126), (130), (141), (152), (163), (174), (185), (196), (200), (211), (222), (233), (244), (255), (266), (270), (281), (292), (303), (314), (05), (06))
  14. ((20211129), (20211130), (2021121), (2021122), (2021123), (2021124), (2021125), (2021126), (2021127), (2021128), (2021129), (20211210), (20211211), (20211212), (20211213), (20211214), (20211215), (20211216), (20211217), (20211218), (20211219), (20211220), (20211221), (20211222), (20211223), (20211224), (20211225), (20211226), (20211227), (20211228), (20211229), (20211230), (20211231), (202211), (202212))
  15. ((202111290), (202111301), (20211212), (20211223), (20211234), (20211245), (20211256), (20211260), (20211271), (20211282), (20211293), (202112104), (202112115), (202112126), (202112130), (202112141), (202112152), (202112163), (202112174), (202112185), (202112196), (202112200), (202112211), (202112222), (202112233), (202112244), (202112255), (202112266), (202112270), (202112281), (202112292), (202112303), (202112314), (2022115), (2022126))
  16. Process finished with exit code 0

后续Calendar类中又新增了 6 中实例方法,分别是处理月份和年的:

  1.     def monthdatescalendar(self, year, month):
  2.         """
  3.         返回一个月的年月日,并且分割成四个周,使用的datetime.date 对象
  4.         例如:[
  5.               [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)], 
  6.               [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)], 
  7.               [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)], 
  8.               [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)], 
  9.               [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)]
  10.              ]
  11.         """
  12.     def monthdays2calendar(self, year, month):
  13.         """
  14.         返回一个月的天和周几,并且分割成四个周,不在本月的日使用 0 填充。
  15.         例如:[
  16.               [(0, 0), (0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)], 
  17.               [(6, 0), (7, 1), (8, 2), (9, 3), (10, 4), (11, 5), (12, 6)], 
  18.               [(13, 0), (14, 1), (15, 2), (16, 3), (17, 4), (18, 5), (19, 6)], 
  19.               [(20, 0), (21, 1), (22, 2), (23, 3), (24, 4), (25, 5), (26, 6)], 
  20.               [(27, 0), (28, 1), (29, 2), (30, 3), (31, 4), (0, 5), (0, 6)]
  21.              ]
  22.         """
  23.     def monthdayscalendar(self, year, month):
  24.         """
  25.         返回一个月的天,并且分割成四个周,不在本月的日使用 0 填充。
  26.         例如:[
  27.               [0, 0, 1, 2, 3, 4, 5], 
  28.               [6, 7, 8, 9, 10, 11, 12], 
  29.               [13, 14, 15, 16, 17, 18, 19], 
  30.               [20, 21, 22, 23, 24, 25, 26], 
  31.               [27, 28, 29, 30, 31, 0, 0]
  32.              ]
  33.         """
  34.     def yeardatescalendar(self, year, width=3):
  35.         """
  36.         返回的值是一个列表,列表是月份组成的行。每一行包含了最多 width 个月(默认为3)。
  37.         每一天使用 datetime.date 对象。
  38.         """
  39.     def yeardays2calendar(self, year, width=3):
  40.         """
  41.         返回的值是一个列表,列表的元素是由表示日期的数字和表示星期几的数字组成的元组。
  42.         不在这个月的日子为0。
  43.         """
  44.     def yeardayscalendar(self, year, width=3):
  45.         """
  46.         返回的值是一个列表,周列表的元素是表示日期天的数字。不在这个月的日子为0。
  47.         """
  • 首先是月份的,示例如下:
  1. from calendar import Calendar
  2. = Calendar()
  3. print(c.monthdayscalendar(202112))
  4. print(c.monthdatescalendar(202112))
  5. print(c.monthdays2calendar(202112))
  6. # 运行结果
  7. [
  8. [0012345], 
  9. [6789101112], 
  10. [13141516171819], 
  11. [20212223242526], 
  12. [272829303100]
  13. ]
  14. ---
  15. [
  16. [datetime.date(20211129), datetime.date(20211130), datetime.date(2021121), datetime.date(2021122), datetime.date(2021123), datetime.date(2021124), datetime.date(2021125)],
  17. [datetime.date(2021126), datetime.date(2021127), datetime.date(2021128), datetime.date(2021129), datetime.date(20211210), datetime.date(20211211), datetime.date(20211212)], 
  18. [datetime.date(202
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/716328
推荐阅读
相关标签
  

闽ICP备14008679号