带有示例的Python日历模块

Python中的日历模块

此模块中定义的方法和类使用理想化的日历,当前的公历在两个方向上无限期扩展。零年和负年按照ISO 8601标准的规定进行解释。0年是1 BC,-1年是2 BC。 

这些日历默认情况下以星期一为一周的第一天,以星期日为最后一天。您可以使用setfirstweekday()将的第一天设置为星期日(6)或任何其他工作日。指定日期的参数以整数形式给出。

示例:显示给定年份日历的Python程序。

# Python程序打印日历 
# 给定年份
    
# 导入日历模块   
import calendar  
    
# 使用日历打印年份日历  
print ("The calender of year 2020 is : ")  
print (calendar.calendar(2020, 2, 1, 6))

输出:

The calender of year 2020 is : 
                                  2020

      January                   February                   March
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                         1
 6  7  8  9 10 11 12       3  4  5  6  7  8  9       2  3  4  5  6  7  8
13 14 15 16 17 18 19      10 11 12 13 14 15 16       9 10 11 12 13 14 15
20 21 22 23 24 25 26      17 18 19 20 21 22 23      16 17 18 19 20 21 22
27 28 29 30 31            24 25 26 27 28 29         23 24 25 26 27 28 29
                                                    30 31

       April                      May                       June
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
 6  7  8  9 10 11 12       4  5  6  7  8  9 10       8  9 10 11 12 13 14
13 14 15 16 17 18 19      11 12 13 14 15 16 17      15 16 17 18 19 20 21
20 21 22 23 24 25 26      18 19 20 21 22 23 24      22 23 24 25 26 27 28
27 28 29 30               25 26 27 28 29 30 31      29 30

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

      October                   November                  December
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                         1          1  2  3  4  5  6
 5  6  7  8  9 10 11       2  3  4  5  6  7  8       7  8  9 10 11 12 13
12 13 14 15 16 17 18       9 10 11 12 13 14 15      14 15 16 17 18 19 20
19 20 21 22 23 24 25      16 17 18 19 20 21 22      21 22 23 24 25 26 27
26 27 28 29 30 31         23 24 25 26 27 28 29      28 29 30 31
                          30

示例:显示给定月份的Python程序。

# Python程序打印日历 
# 给定的月份
    
# 导入日历模块   
import calendar  
    
# 使用日历打印2020年5月的日历  
print ("The calender of May 2020 is : ")  
calendar.prmonth(2020, 5)

输出:

The calender of May 2020 is : 
      May 2020
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

A.日历模块中的类和方法

Python中的日历模块提供以下类,

1.日历班

此类创建Calendar对象。Calendar对象提供了几种可用于准备日历数据以进行格式化的方法。数据的格式化由此类的子类完成。

方法描述
iterweekdays()返回将用于一周的星期几的迭代器。
itermonthdates(y, m)返回y年中月m(1–12)的迭代器。
itermonthdays(y, m)传回y年中月份m的迭代器,类似于itermonthdates()。返回的天数是月份中的天数。对于给定月份以外的日子,天数为0。
itermonthdays2(y,m)返回y年中月份m的迭代器。返回的
天是由月中的一天号和工作日号组成的元组。
itermonthdays3(y,m)返回y年中月份m的迭代器。返回的天是由年份,月份和月份中的一天数字组成的元组。
从3.7版开始可用
itermonthdays4(y,m)返回y年中月份m的迭代器。返回的天是由年,月,月中的某天和星期几组成的元组。
从3.7版开始可用
monthdatescalendar(y, m)返回y年的m个月中的星期列表(以完整的星期为单位)。
以七个datetime.date对象列表列出的周数。
monthdays2calendar(y, m)返回y年的m个月中的星期列表(以完整的星期为单位)。
给出的星期数是日数和工作日数的七个元组的列表。
monthdayscalendar(y, m)返回y年的m个月中的星期列表(以完整的星期为单位)。
以7天数字列表形式给出的周数。
yeardatescalendar(y,width = 3)返回指定年份y的数据,准备进行格式化。返回值是月份行的列表。
yeardays2calendar(y,width = 3)返回指定年份y的数据,准备进行格式化。
周列表是日编号和工作日编号的元组。
yeardayscalendar(y,width = 3)返回指定年份y的数据,准备进行格式化。
给定的周列表是天数列表。

2. TextCalendar类

此类创建简单的文本日历。

方法描述
格式month(年,月,w = 0,l = 0)以多行字符串返回一个月的日历。
prmonth(年,月,w = 0,l = 0)打印由返回的一个月的日历formatmonth()。
formatyear(年,w = 2,l = 1,c = 6,m = 3)以多行字符串的形式返回整个一年的m列日历。
pryear(年,w = 2,l = 1,c = 6,m = 3)打印由返回的整年的日历formatyear()。

3. HTMLCalendar类

此类用于创建HTML日历并对其进行操作。HTML日历具有以下方法和属性:

方法

方法描述
格式month(年,月,withyear = True)以HTML表格的形式返回一个月的日历。
格式年份(年,宽度= 3)以HTML表格的形式返回一年的日历。
formatyearpage(year,width = 3,css ='calendar.css',encoding = None)返回一年的日历作为完整的HTML页面。

属性

属性描述
CSS类每个工作日使用的CSS类列表。
cssclass_noday上个月或下个月发生的工作日的CSS类。
cssclasses_weekday_head标头行中用于工作日名称的CSS类列表。
cssclass_month_head本月的主要CSS类(用于formatmonthname())。默认值为“月”。
cssclass_month整个月表的CSS类(用于formatmonth())。默认值为“月”。
cssclass_year全年表格的CSS类(用于formatyear())。默认值为“年份”。
cssclass_year_head全年表头的CSS类(用于formatyear())。默认值为“年份”。

4. LocaleTextCalendar类

这是TextCalendar类的子类。可以在构造函数中为其传递语言环境名称,该名称将在指定的语言环境中返回月份和工作日的名称。

5. LocaleHTMLCalendar CLass

这是HTMLCalendar类的子类。可以在构造函数中为其传递语言环境名称,该名称将在指定的语言环境中返回月份和工作日的名称。

Python中的日历模块为简单的文本日历提供了以下方法:

方法描述
setfirstweekday(weekday)将工作日设置为每周开始。
其中(0是星期一,6是星期日)。
firstweekday()返回每个星期开始的工作日的当前设置。
isleap(y)如果y是a年,则返回True,否则返回False。
日(y1,y2)返回从y1到y2的of年数,其中y1和y2是年。
weekday(year, month, day)返回年份(1970 –...),月份(1–12),日期(1–31)的星期几(0为星期一)。
weekheader(n)返回包含缩写的工作日名称的标头。n指定一个工作日的宽度(以字符为单位)。
monthrange(year,month)返回给定年份和月份的月份的第一天的工作日以及月份中的天数。
monthcalendar(year, month)返回代表一个月日历的矩阵。每行代表一个星期;该月以外的天数打印为0。
prmonth(年,月,w = 0,l = 0)打印由返回的一个月的日历month()。
month(year,month,w = 0,l = 0)使用formatmonth()TextCalendar类的多行字符串返回一个月的日历。
prcal(年,w = 0,l = 0,c = 6,m = 3)打印由返回的整年的日历calendar()。
日历(年,w = 0,l = 0,c = 6,m = 3)使用formatyear()TextCalendar类的,以多行字符串的形式返回整个一年的3列日历。

B.日历模块中的数据属性

该模块具有以下数据属性:

  1. day_name:这是一个数组,表示当前语言环境中的星期几。

  2. day_abbr:这是一个数组,表示当前语言环境中星期几的缩写。

  3. month_name:这是一个数组,表示当前语言环境中的一年中的月份。这里的一月表示为月号1,因此数组的长度为13,而month_name [0]为空字符串。

  4. month_abbr:这是一个数组,表示当前语言环境中一年中的缩写月份。这里的一月表示为月份号1,因此数组的长度为13,而month_abbr [0]为空字符串。


参考:日历—与日历相关的常规功能