栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python打印一整年的日历

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python打印一整年的日历

文章目录
    • 主要函数
    • **Calendar**
    • **TextCalendar**
    • **HTMLCalendar**

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

0123456
MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY

以及两个月份February、January。

主要函数

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

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

打印函数输出函数输出数组
prcalcalendar
prmonthmonthmonthcalendar

例如

>>> 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中封装的迭代器如下,其输入皆为年和月所对应的数值,返回皆为y年m月所对应的日期。

返回内容
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

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

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

直接打印格式化输入
pryearformatyear年份
prmonthformatmonth年、月
prweekformatweek星期对应的二元数组,字宽
HTMLCalendar

用于生成xml日历。

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

接下来可看一下TextCalendar和HTMLCalendar的区别:

>>> t.formatmonth(2021,10)
'    October 2021nMo Tu We Th Fr Sa Sun             1  2  3n 4  5  6  7  8  9 10n11 12 13 14 15 16 17n18 19 20 21 22 23 24n25 26 27 28 29 30 31n'
>>> 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)
'nnnnnnnn
October 2021
MonTueWedThuFriSatSun
    123
45678910
11121314151617
18192021222324
25262728293031
n' >>>
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339221.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号