python打印一整年的日历

文章目录

    • 主要函数
    • **Calendar**
    • **TextCalendar**
    • **HTMLCalendar**

calendar中封装了一些类似枚举的变量,首先是星期

0 1 2 3 4 5 6
MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY SUNDAY

以及两个月份FebruaryJanuary

主要函数

calendar中最便利的就是pr函数,可以直接打印出相关的日历,以及对应的字符串输出函数。

主要有打印某一年的日历;prmonth打印某个月的日历;

打印函数 输出函数 输出数组
prcal calendar
prmonth month monthcalendar

例如

>>> import calendar
>>> calendar.prcal(2021,m=4)
                                               2021

      January                   February                   March                     April
Mo Tu We Th Fr Sa Su      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  5  6  7                1  2  3  4
 4  5  6  7  8  9 10       8  9 10 11 12 13 14       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      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      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

        May                       June                      July                     August
Mo Tu We Th Fr Sa Su      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                         1
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       5  6  7  8  9 10 11       2  3  4  5  6  7  8
10 11 12 13 14 15 16      14 15 16 17 18 19 20      12 13 14 15 16 17 18       9 10 11 12 13 14 15
17 18 19 20 21 22 23      21 22 23 24 25 26 27      19 20 21 22 23 24 25      16 17 18 19 20 21 22
24 25 26 27 28 29 30      28 29 30                  26 27 28 29 30 31         23 24 25 26 27 28 29
31                                                                            30 31

     September                  October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
       1  2  3  4  5                   1  2  3       1  2  3  4  5  6  7             1  2  3  4  5
 6  7  8  9 10 11 12       4  5  6  7  8  9 10       8  9 10 11 12 13 14       6  7  8  9 10 11 12
13 14 15 16 17 18 19      11 12 13 14 15 16 17      15 16 17 18 19 20 21      13 14 15 16 17 18 19
20 21 22 23 24 25 26      18 19 20 21 22 23 24      22 23 24 25 26 27 28      20 21 22 23 24 25 26
27 28 29 30               25 26 27 28 29 30 31      29 30                     27 28 29 30 31

此外还有一些实用的函数

  • isleap:判断是否为闰年
  • weekday:输入年、月、日,返回星期
  • monthrange:输入年、月,返回这个月份第一天的星期和本月天数。
  • firstweekday:无参数,返回当前日历第一天的星期。
  • setfirstweekday:更改每周第一天的星期,默认为0代表周一。
  • weekheader:输入为字符宽度,输出每周的缩写。

在很多函数中,都提供了一些用于格式化的参数,可选参数 w, l, c ,m分别表示日期列数, 周的行数, 和月之间的间隔。

calendar中封装了一些Canlendar类,主要有:

  • Calendar
  • TextCalendar
  • HTMLCalendar

Calendar

顾名思义,Calendar就是日历,创建一个新日历必须声明每周第一天是周几。默认为0,代表周一。

Calendar中封装了许多迭代器,迭代器中包含__next__方法,即可通过next()函数来更改输出值。例如iterweekdays(),其功能为星期所对应的数字,示例如下

>>> cal = calendar.Calendar(0)
>>> weekday = cal.iterweekdays()
>>> next(weekday)
0
>>> next(weekday)
1
>>> next(weekday)
2
>>> list(weekday)
[3, 4, 5, 6]

此外,Calendar中封装的迭代器如下,其输入皆为年和月所对应的数值,返回皆为ym月所对应的日期。

返回内容
itermonthdates(y, m) 日期包含了本月头尾用于组成完整一周的日期。
itermonthdays(y, m) 当月每日对应的天数,不在本月的日期显示为0
itermonthdays2(y, m) 迭代器的元素为由日期和星期组成的的元组
itermonthdays3(y, m) 迭代器的素为年、月、日组成的元组。
itermonthdays4(y, m) 迭代器元素为年、月、日、星期组成的元组。

此外,还封装了一些返回列表的函数

  • monthdatescalendar(year, month):返回指定年月的周列表,其元素为datetime.date对象。
  • monthdays2calendar(year, month):返回指定年月的周列表,每周的元素为七个日期和星期组成的二元元组
  • monthdayscalendar(year, month):返回一个表示指定年月的周列表。周列表由七个代表日期的数字组成。
  • yeardatescalendar(year, width=3):返回月份组成的列表,每一行包含了最多 width 个月(默认为3)。每个月包含了4到6周,每周包含1–7天。每一天使用 datetime.date 对象。
  • yeardays2calendar(year, width=3):返回可以用来模式化的指定年月的数据(与 yeardatescalendar() 类似)。周列表的元素是由表示日期的数字和表示星期几的数字组成的元组。不在这个月的日子为0。
  • yeardayscalendar(year, width=3):返回可以用来模式化的指定年月的数据(与 yeardatescalendar() 类似)。周列表的元素是表示日期的数字。不在这个月的日子为0。

TextCalendar

用于生成纯文本日历,创建时同样需要声明周的第一天。

该类首先提供了格式化日历的生成方法,主要包括formatpr两种格式,前者生成字符串,后者直接在命令行打印自动换行的文本。其常用的功能即打印月份和年,如下表所示。

直接打印 格式化 输入
pryear formatyear 年份
prmonth formatmonth 年、月
prweek formatweek 星期对应的二元数组,字宽

HTMLCalendar

用于生成xml日历。

TextCalendar相似,HTMLCalendar也提供了formatmonthformatyerar函数,此外还有直接输出一个完整HTML页面的函数formatyearpage

接下来可看一下TextCalendarHTMLCalendar的区别:

>>> t.formatmonth(2021,10)
'    October 2021\nMo Tu We Th Fr Sa Su\n             1  2  3\n 4  5  6  7  8  9 10\n11 12 13 14 15 16 17\n18 19 20 21 22 23 24\n25 26 27 28 29 30 31\n'
>>> t.prmonth(2021,10)
    October 2021
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
>>> h = HTMLCalendar(0)
>>> h.formatmonth(2021,10)
'\n\n\n\n\n\n\n\n
October 2021
MonTueWedThuFriSatSun
    123
45678910
11121314151617
18192021222324
25262728293031
\n'
>>>

你可能感兴趣的:(Python,python,开发语言,python标准库,日期,时间)