• 技术文章 >Python技术 >Python基础教程

    calendar可以在python3时间中生成日历吗?

    小妮浅浅小妮浅浅2020-11-17 17:50:33原创1906

    做完一个月历后,小伙们直呼不过瘾,想要做出一本日历来。小编已经要赔付大家了,毕竟日历比月历难得多,但是反过来想,是不是可以做出一页的日历打印下来,贴在家里和工作的地方都很方便,而且也是一个省钱的好办法了。作为一个行动派,小编马上就为大家安排上这方面的内容。


    要以不同于其中一个可用默认值的格式生成输出,请使用calendar计算日期并将值组织为周和月范围,然后迭代结果。Calendar模块的 weekheader(),monthcalendar()和 yeardays2calendar()方法对此特别有用。

    调用yeardays2calendar()会生成一系列“月份行”列表。每个列表包括月份作为另一个周列表。这几周是由日期编号(1-31)和工作日编号(0-6)组成的元组列表。超出月份的天数为 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

    import calendar

    import pprint

      

    cal = calendar.Calendar(calendar.SUNDAY)

      

    cal_data = cal.yeardays2calendar(2017, 3)

    print('len(cal_data)      :', len(cal_data))

      

    top_months = cal_data[0]

    print('len(top_months)    :', len(top_months))

      

    first_month = top_months[0]

    print('len(first_month)   :', len(first_month))

      

    print('first_month:')

    pprint.pprint(first_month, width=65)

      

    # 输出

    # len(cal_data)      : 4

    # len(top_months)    : 3

    # len(first_month)   : 5

    # first_month:

    # [[(1, 6), (2, 0), (3, 1), (4, 2), (5, 3), (6, 4), (7, 5)],

    #  [(8, 6), (9, 0), (10, 1), (11, 2), (12, 3), (13, 4), (14, 5)],

    #  [(15, 6), (16, 0), (17, 1), (18, 2), (19, 3), (20, 4), (21, 5)],

    #  [(22, 6), (23, 0), (24, 1), (25, 2), (26, 3), (27, 4), (28, 5)],

    #  [(29, 6), (30, 0), (31, 1), (0, 2), (0, 3), (0, 4), (0, 5)]]


    相当于使用formatyear()。

    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

    import calendar

      

    cal = calendar.TextCalendar(calendar.SUNDAY)

    print(cal.formatyear(2017, 2, 1, 1, 3))

      

    # 输出

    #                               2017

    #

    #       January               February               March

    # Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa

    #  1  2  3  4  5  6  7            1  2  3  4            1  2  3  4

    #  8  9 10 11 12 13 14   5  6  7  8  9 10 11   5  6  7  8  9 10 11

    # 15 16 17 18 19 20 21  12 13 14 15 16 17 18  12 13 14 15 16 17 18

    # 22 23 24 25 26 27 28  19 20 21 22 23 24 25  19 20 21 22 23 24 25

    # 29 30 31              26 27 28              26 27 28 29 30 31

    #

    #        April                  May                   June

    # Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa

    #                    1      1  2  3  4  5  6               1  2  3

    #  2  3  4  5  6  7  8   7  8  9 10 11 12 13   4  5  6  7  8  9 10

    #  9 10 11 12 13 14 15  14 15 16 17 18 19 20  11 12 13 14 15 16 17

    # 16 17 18 19 20 21 22  21 22 23 24 25 26 27  18 19 20 21 22 23 24

    # 23 24 25 26 27 28 29  28 29 30 31           25 26 27 28 29 30

    # 30

    #

    #         July                 August              September

    # Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa

    #                    1         1  2  3  4  5                  1  2

    #  2  3  4  5  6  7  8   6  7  8  9 10 11 12   3  4  5  6  7  8  9

    #  9 10 11 12 13 14 15  13 14 15 16 17 18 19  10 11 12 13 14 15 16

    # 16 17 18 19 20 21 22  20 21 22 23 24 25 26  17 18 19 20 21 22 23

    # 23 24 25 26 27 28 29  27 28 29 30 31        24 25 26 27 28 29 30

    # 30 31

    #

    #       October               November              December

    # Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa

    #  1  2  3  4  5  6  7            1  2  3  4                  1  2

    #  8  9 10 11 12 13 14   5  6  7  8  9 10 11   3  4  5  6  7  8  9

    # 15 16 17 18 19 20 21  12 13 14 15 16 17 18  10 11 12 13 14 15 16

    # 22 23 24 25 26 27 28  19 20 21 22 23 24 25  17 18 19 20 21 22 23

    # 29 30 31              26 27 28 29 30        24 25 26 27 28 29 30

    #                                             31

    day_name,day_abbr,month_name,和 month_abbr模块主要用于生产定制格式化输出(即,包括在 HTML 输出链接)。它们会针对当前区域自动化配置。

    这些代码看起来很长,其实只要复制运行就可以啦,小伙伴们不要不敢尝试~更多Python学习推荐:PyThon学习网教学中心

    专题推荐:在python3时间
    上一篇:python3时间如何用calendar输出? 下一篇:calendar如何筛选出python3时间中重复事件?

    相关文章推荐

    • datetime在python3时间中的特殊使用有哪些?• time函数在python3时间中如何输出?• datetime怎样在python3时间中执行循环?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备16018502号-40

  • 取消发布评论
  • 

    Python学习网