calendar是和日历模块,calendar模块文件里定义了很多类型,主要有Calendar,TextCalendar以及HTMLCalendar类型。其中,Calendar是TextCalendar与HTMLCalendar的基类。
公众号:知识追寻者
知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)
firstweekday(): 返回当前每周起始日期值。默认情况下,首次载入calendar模块时返回0,即星期一
import calendar
# 0
print(calendar.firstweekday())
setfirstweekday(firstweekday) :通过常量 MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY 和 SUNDAY 设置星期;其中 0 表示星期一,以此类推6表示星期日;
import calendar
calendar.setfirstweekday(calendar.SUNDAY)
# 6
print(calendar.firstweekday())
isleap(year):判断是否是闰年,闰年为True,平年为False
import calendar
# False
print(calendar.isleap(2018))
# True
print(calendar.isleap(2016))
leapdays(y1, y2): 返回[y1,y2)年份之间的闰年数量;
import calendar
# 2
print(calendar.leapdays(2012, 2020))
weekday(year, month, day):获取指定日期为星期几
import calendar
# 0 表示星期一
print(calendar.weekday(2020,5,11))
monthrange(year, month): 返回元组, 第一个值代表给定月份第一天的星期;第二个值代表给定月份有多少天;
import calendar
# (5, 29) -- 表示周六,有29天
print(calendar.monthrange(2020, 2))
# (4, 31) -- 表示周五,有31天
print(calendar.monthrange(2020, 5))
weekheader(n):返回包含星期的英文缩写,n表示返回缩写的长度;
import calendar
# Sun Mon Tue Wed Thu Fri Sat
print(calendar.weekheader(4))
monthcalendar(year, month): 返回表示一个月的日历的矩阵,每一行代表一周; 可以通过setfirstweekday() 改变默认值;
import calendar
print(calendar.monthcalendar(2020, 5))
输出
[[0, 0, 0, 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, 28, 29, 30, 31]]
prmonth(theyear, themonth, w=0, l=0): 打印一个月的日历
import calendar
print(calendar.prmonth(2020, 5))
输出
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
None
prcal(year, w=0, l=0, c=6, m=3) : 打印一年的日历
import calendar
calendar.prcal(2020, m=4)
输出
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
返回星期列表
import calendar
days = [day for day in calendar.day_name]
print(days)
输出
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
返回月份列表
import calendar
months = [month for month in calendar.month_name]
print(months)
输出
['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
Calendar
对象提供了一些可被用于准备日历数据格式化的方法。 这个类本身不执行任何格式化操作
获取一周的数字的迭代器
from calendar import Calendar
car = Calendar()
weeks = [ value for value in car.iterweekdays()]
print(weeks)
输出
[0, 1, 2, 3, 4, 5, 6]
termonthdates(year, month)获取一个月日期的迭代器
from calendar import Calendar
car = Calendar()
date = [date for date in car.itermonthdates(2020,5)]
print(date)
输出
[datetime.date(2020, 4, 27), datetime.date(2020, 4, 28), datetime.date(2020, 4, 29), datetime.date(2020, 4, 30), datetime.date(2020, 5, 1),..........]
itermonthdays(year, month)返回一个月天数的迭代器
from calendar import Calendar
car = Calendar()
days = [day for day in car.itermonthdays(2020,5)]
print(days)
输出
[0, 0, 0, 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, 28, 29, 30, 31]
TextCalendar 对象提供了一些生成纯文本日历的方法;
formatmonth(theyear, themonth, w=0, l=0) 返回一个月的日历 ; 其中 prmonth(theyear, themonth, w=0, l=0) 打印结果 与formatmonth 一样,之间打印,不用写打印函数;
theyear
指定年;themonth
指定月from calendar import TextCalendartextcar = TextCalendar()print(textcar.formatmonth(2020, 5))
输出
May 2020Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 1718 19 20 21 22 23 24
formatyear
(theyear, w=2, l=1, c=6, m=3) : 返回m 个列的日历;其中 pryear
(theyear, w=2, l=1, c=6, m=3) 与其一样;
2020 January February MarchMo 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 813 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 1520 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 2227 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29 30 31 April May JuneMo 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 1413 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 2120 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 2827 28 29 30 25 26 27 28 29 30 31 29 30 July August SeptemberMo 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 1313 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 2020 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 2727 28 29 30 31 24 25 26 27 28 29 30 28 29 30 31 October November DecemberMo 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 1312 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 2019 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 2726 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31 30
calendar.HTMLCalendar
(firstweekday=0)
可以使用HTMLCalendar 类生成 HTML 日历;其方法与之前的TextCalendar 大多类似,简单示例如下
from calendar import HTMLCalendarhtmlCar = HTMLCalendar()print(htmlCar.formatmonth(2020, 5, withyear=False))
输出
<table border="0" cellpadding="0" cellspacing="0" class="month"><tr><th colspan="7" class="month">May</th></tr><tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr><tr><td class="noday"> </td><td class="noday"> </td><td class="noday"> </td><td class="noday"> </td><td class="fri">1</td><td class="sat">2</td><td class="sun">3</td></tr><tr><td class="mon">4</td><td class="tue">5</td><td class="wed">6</td><td class="thu">7</td><td class="fri">8</td><td class="sat">9</td><td class="sun">10</td></tr><tr><td class="mon">11</td><td class="tue">12</td><td class="wed">13</td><td class="thu">14</td><td class="fri">15</td><td class="sat">16</td><td class="sun">17</td></tr><tr><td class="mon">18</td><td class="tue">19</td><td class="wed">20</td><td class="thu">21</td><td class="fri">22</td><td class="sat">23</td><td class="sun">24</td></tr><tr><td class="mon">25</td><td class="tue">26</td><td class="wed">27</td><td class="thu">28</td><td class="fri">29</td><td class="sat">30</td><td class="sun">31</td></tr></table>
https://docs.python.org/3/library/calendar.html