Python標(biāo)準(zhǔn)庫calendar的使用方法_第1頁
Python標(biāo)準(zhǔn)庫calendar的使用方法_第2頁
Python標(biāo)準(zhǔn)庫calendar的使用方法_第3頁
Python標(biāo)準(zhǔn)庫calendar的使用方法_第4頁
Python標(biāo)準(zhǔn)庫calendar的使用方法_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第Python標(biāo)準(zhǔn)庫calendar的使用方法目錄Calendarcalendar.Calendar(firstweekday=0)類calendar.TextCalendar(firstweekday=0)calendar.HTMLCalendar(firstweekday=0)

此模塊允許你輸出類似Unixcal程序的日歷,并提供與日歷相關(guān)的其他有用功能。值得注意的是,默認(rèn)情況下,這些日歷將星期一作為一周的第一天,將星期日作為一周的最后一天(歐洲慣例)。不過,我們可以使用setfirstweekday()方法來設(shè)置一周的第一天為星期日或h者其他工作日,指定的日期以整數(shù)形式給出。

calendar模塊主要由Calendar類與一些模塊方法構(gòu)成,Calendar類又衍生了一些子孫類來幫助我們實(shí)現(xiàn)一些特殊的功能

Calendar

模塊方法

setfirstweekday(firstweekday):指定一周的第一天,0是星期一,…,6為星期日

importcalendar

#將星期日設(shè)置為一周第一天

calendar.setfirstweekday(firstweekday=6)

firstweekday():返回一周的第一天,0是星期一,…,6為星期日

importcalendar

#將星期日設(shè)置為一周第一天

calendar.setfirstweekday(firstweekday=6)

print(calendar.firstweekday())#6

isleap(year):判斷指定是否是閏年,閏年為True,平年為False

importcalendar

#2025年是平年,所以為False

print(calendar.isleap(2025))#False

#2008年是如年,所以為True

print(calendar.isleap(2008))#True

leapdays(y1,y2):返回y1與y2年份之間的閏年數(shù)量,y1與y2皆為年份。包括起始年,不包括結(jié)束年:

importcalendar

#2008到2011之間只有2008年是閏年,所以數(shù)量為1

print(calendar.leapdays(2008,2011))#1

weekday(year,month,day):獲取指定日期為星期幾

importcalendar

#2025-08-08正是星期三,千萬別忘記2代表的是星期三

print(calendar.weekday(2025,8,8))#2

weekheader(n):返回包含星期的英文縮寫,n表示英文縮寫所占的寬度

importcalendar

print(calendar.weekheader(4))

###############打印結(jié)果如下###############

MonTueWedThuFriSatSun

monthrange(year,month):返回一個(gè)由一個(gè)月第一個(gè)天的星期與當(dāng)前月的天數(shù)組成的元組

importcalendar

#查看日歷可以知道,08-01正是星期三,并且8月共31天

print(2025,8)#(2,31)

monthcalendar(year,month):返回一個(gè)月中天數(shù)列表(不是當(dāng)前月份的天數(shù)為0),按周劃分,為一個(gè)二維數(shù)組。包括月份開始那周的所有日期和月份結(jié)束那周的所有日期

importcalendar

calendar.setfirstweekday(firstweekday=6)

print(calendar.monthcalendar(2025,8))

###############打印結(jié)果如下###############

[[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,0]]

prmonth(theyear,themonth,w=0,l=0):打印一個(gè)月的日歷,theyear指定年份,themonth指定月份,w每個(gè)單元格寬度,默認(rèn)0,內(nèi)部已做處理,最小寬度為2,l每列換l行,默認(rèn)為0,內(nèi)部已做處理,至少換行1行

importcalendar

calendar.setfirstweekday(firstweekday=6)

calendar.prmonth(2025,8)

###############打印結(jié)果如下###############

August2025

SuMoTuWeThFrSa

1234

567891011

12131415161718

19202122232425

262728293031

month(theyear,themonth,w=0,l=0):返回一個(gè)月的日歷的多行文本字符串。theyear指定年份,themonth指定月份,w每個(gè)單元格寬度,默認(rèn)0,內(nèi)部已做處理,最小寬度為2,l每列換l行,默認(rèn)為0,內(nèi)部已做處理,至少換行1行

importcalendar

calendar.setfirstweekday(firstweekday=6)

print(calendar.month(2025,8))

###############打印結(jié)果如下###############

August2025

SuMoTuWeThFrSa

1234

567891011

12131415161718

19202122232425

262728293031

prcal(year,w=0,l=0,c=6,m=3):打印一年的日歷,w每個(gè)單元格寬度,默認(rèn)0,內(nèi)部已做處理,最小寬度為2,l每列換l行,默認(rèn)為0,內(nèi)部已做處理,至少換行1行,c表示月與月之間的間隔寬度,默認(rèn)為6,內(nèi)部已做處理,最小寬度為2,m表示將12個(gè)月分為m列

importcalendar

calendar.setfirstweekday(firstweekday=6)

calendar.prcal(2025,m=4)

###############打印結(jié)果如下###############

2025

JanuaryFebruaryMarchApril

SuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSa

1234561231231234567

789101112134567891045678910891011121314

14151617181920111213141516171112131415161715161718192021

21222324252627181920212223241819202122232422232425262728

2829303125262728252627282930312930

MayJuneJulyAugust

SuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSa

123451212345671234

67891011123456789891011121314567891011

13141516171819101112131415161516171819202112131415161718

20212223242526171819202122232223242526272819202122232425

272829303124252627282930293031262728293031

SeptemberOctoberNovemberDecember

SuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSa

11234561231

234567878910111213456789102345678

910111213141514151617181920111213141516179101112131415

16171819202122212223242526271819202122232416171819202122

232425262728292829303125262728293023242526272829

303031

calendar(year,w=2,l=1,c=6,m=3):以多行字符串形式返回一年的日歷,w每個(gè)單元格寬度,默認(rèn)2,內(nèi)部已做處理,最小寬度為2,l每列換l行,默認(rèn)為1,內(nèi)部已做處理,至少換行1行,c表示月與月之間的間隔寬度,默認(rèn)為6,內(nèi)部已做處理,最小寬度為2,m表示將12個(gè)月分為m列

importcalendar

calendar.setfirstweekday(firstweekday=6)

print(calendar.calendar(2025,m=4))

###############打印結(jié)果如下###############

2025

JanuaryFebruaryMarchApril

SuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSa

1234561231231234567

789101112134567891045678910891011121314

14151617181920111213141516171112131415161715161718192021

21222324252627181920212223241819202122232422232425262728

2829303125262728252627282930312930

MayJuneJulyAugust

SuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSa

123451212345671234

67891011123456789891011121314567891011

13141516171819101112131415161516171819202112131415161718

20212223242526171819202122232223242526272819202122232425

272829303124252627282930293031262728293031

SeptemberOctoberNovemberDecember

SuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSa

11234561231

234567878910111213456789102345678

910111213141514151617181920111213141516179101112131415

16171819202122212223242526271819202122232416171819202122

232425262728292829303125262728293023242526272829

30

calendar.Calendar(firstweekday=0)類

firstweekday為一個(gè)整數(shù),指定一周的第一天,0是星期一(默認(rèn)),6為星期日

iterweekdays():獲取一周的數(shù)字的迭代器,迭代器的第一個(gè)值與firstweekday的值相同

fromcalendarimportCalendar

c=Calendar()

print(list(c.iterweekdays()))#[0,1,2,3,4,5,6]--代表星期一至星期日,0為星期一,即一周的第一天

c=Calendar(firstweekday=6)

print(list(c.iterweekdays()))#[6,0,1,2,3,4,5]--代表星期日至星期六,6為星期日,即一周的第一天

itermonthdates(year,month):獲取一個(gè)月日期的迭代器,此迭代器會(huì)返回指定月份的所有日期,包括月份開始那周的所有日期和月份結(jié)束那周的所有日期

fromcalendarimportCalendar

c=Calendar(firstweekday=6)

foriteminc.itermonthdates(2025,8):

print(item)

###############打印結(jié)果如下###############

2025-07-29

2025-07-30

2025-07-31

2025-08-01

2025-08-31

2025-09-01

可以看出,2025-07-29、2025-07-30、2025-07-31正是8月份開始的那一周的日期,而2025-09-01為8月份結(jié)束的那一周的日期,8月份所有的日期全部獲取得到!另外注意的是,這里的日期為datatime.date類型!另外,請(qǐng)將星期天設(shè)置為一周的第一天,否則將無法直觀顯示其作用!

itermonthdays(year,month):返回一個(gè)月天數(shù)的迭代器(不是當(dāng)前月份的天數(shù)為0),此迭代器將返回指定月份的日期數(shù)字,包括月份開始那周的所有日期和月份結(jié)束那周的所有日期

fromcalendarimportCalendar

c=Calendar(firstweekday=6)

foriteminc.itermonthdays(2025,8):

print(item)

###############打印結(jié)果如下###############

0

因?yàn)?025-07-29、2025-07-30、2025-07-31、2025-09-01不是指定月份的日期,所以為0

itermonthdays2(year,month):返回一個(gè)月天數(shù)與星期的迭代器(不是當(dāng)前月份的天數(shù)為0),此迭代器將返回指定月份的日期數(shù)字與星期幾所代表的數(shù)字組成的元組,包括月份開始那周的所有日期和月份結(jié)束那周的所有日期

fromcalendarimportCalendar

c=Calendar(firstweekday=6)

foriteminc.itermonthdays2(2025,8):

print(item)

###############打印結(jié)果如下###############

(0,6)

(0,0)

(0,1)

(1,2)

(31,4)

(0,5)

可以看出,2025-08-01正是星期三

monthdatescalendar(year,month):返回一個(gè)月日期列表,按周劃分,為一個(gè)二維數(shù)組。包括月份開始那周的所有日期和月份結(jié)束那周的所有日期

fromcalendarimportCalendar

c=Calendar(firstweekday=6)

foriteminc.monthdatescalendar(2025,8):

print(item)

###############打印結(jié)果如下###############

[datetime.date(2025,7,29),datetime.date(2025,7,30),datetime.date(2025,7,31),datetime.date(2025,8,1),datetime.date(2025,8,2),datetime.date(2025,8,3),datetime.date(2025,8,4)]

[datetime.date(2025,8,5),datetime.date(2025,8,6),datetime.date(2025,8,7),datetime.date(2025,8,8),datetime.date(2025,8,9),datetime.date(2025,8,10),datetime.date(2025,8,11)]

[datetime.date(2025,8,12),datetime.date(2025,8,13),datetime.date(2025,8,14),datetime.date(2025,8,15),datetime.date(2025,8,16),datetime.date(2025,8,17),datetime.date(2025,8,18)]

[datetime.date(2025,8,19),datetime.date(2025,8,20),datetime.date(2025,8,21),datetime.date(2025,8,22),datetime.date(2025,8,23),datetime.date(2025,8,24),datetime.date(2025,8,25)]

[datetime.date(2025,8,26),datetime.date(2025,8,27),datetime.date(2025,8,28),datetime.date(2025,8,29),datetime.date(2025,8,30),datetime.date(2025,8,31),datetime.date(2025,9,1)]

可以看出,打印出來的第一個(gè)值為第一周的日期列表,其中還包含了2025-07-29、2025-07-30、2025-07-31三天

monthdayscalendar(year,month):返回一個(gè)月中天數(shù)列表(不是當(dāng)前月份的天數(shù)為0),按周劃分,為一個(gè)二維數(shù)組。包括月份開始那周的所有日期和月份結(jié)束那周的所有日期

fromcalendarimportCalendar

c=Calendar(firstweekday=6)

foriteminc.monthdayscalendar(2025,8):

print(item)

###############打印結(jié)果如下###############

[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,0]

monthdays2calendar(year,month):返回一個(gè)月中天數(shù)與星期的列表(不是當(dāng)前月份的天數(shù)為0),按周劃分,為一個(gè)二維數(shù)組。包括月份開始那周的所有日期和月份結(jié)束那周的所有日期

fromcalendarimportCalendar

c=Calendar(firstweekday=6)

foriteminc.monthdays2calendar(2025,8):

print(item)

###############打印結(jié)果如下###############

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

[(5,6),(6,0),(7,1),(8,2),(9,3),(10,4),(11,5)]

[(12,6),(13,0),(14,1),(15,2),(16,3),(17,4),(18,5)]

[(19,6),(20,0),(21,1),(22,2),(23,3),(24,4),(25,5)]

[(26,6),(27,0),(28,1),(29,2),(30,3),(31,4),(0,5)]

yeardatescalendar(year,width=3):返回一年中所有的日期,為一個(gè)4維數(shù)組。width表示將一年中12個(gè)月份進(jìn)行劃分,每width個(gè)月為一份,每一份包含各個(gè)月份,每個(gè)月份包含周,每周包含日期信息。包括月份開始那周的所有日期和月份結(jié)束那周的所有日期

fromcalendarimportCalendar

c=Calendar(firstweekday=6)

foriteminc.yeardatescalendar(2025,3):

print(item)

###############打印結(jié)果如下###############

[[[datetime.date(2017,12,31),datetime.date(2025,1,1),datetime.date(2025,1,2),...]]]

[[[datetime.date(2025,4,1),datetime.date(2025,4,2),datetime.date(2025,4,3),...]]]

[[[datetime.date(2025,7,1),datetime.date(2025,7,2),datetime.date(2025,7,3),...]]]

[[[datetime.date(2025,9,30),datetime.date(2025,10,1),datetime.date(2025,10,2),...]]]

yeardayscalendar(year,width=3):返回一年中每個(gè)月的天數(shù),為一個(gè)4維數(shù)組。width表示將一年中12個(gè)月份進(jìn)行劃分,每width個(gè)月為一份;每一份包含各個(gè)月份,每個(gè)月份包含周,每周包含天數(shù)信息(不是當(dāng)前月份的天數(shù)為0)。包括月份開始那周的所有日期和月份結(jié)束那周的所有日期

fromcalendarimportCalendar

c=Calendar(firstweekday=6)

foriteminc.yeardayscalendar(2025,3):

print(item)

###############打印結(jié)果如下###############

[[[0,1,2,3,4,5,6],[7,8,9,10,11,12,13],[14,15,16,17,18,19,20],...]]]

[[[1,2,3,4,5,6,7],[8,9,10,11,12,13,14],[15,16,17,18,19,20,21],...]]]

[[[1,2,3,4,5,6,7],[8,9,10,11,12,13,14],[15,16,17,18,19,20,21],...]]]

[[[0,1,2,3,4,5,6],[7,8,9,10,11,12,13],[14,15,16,17,18,19,20],...]]]

yeardays2calendar(year,width=3):返回一年中農(nóng)每個(gè)月的天數(shù)與星期的元組,為一個(gè)4維的元組列表。width表示將一年中12個(gè)月份進(jìn)行劃分,每width個(gè)月為一份;每一份包含各個(gè)月份,每個(gè)月份包含周,每周包含天數(shù)與星期的元組信息(不是當(dāng)前月份的天數(shù)為0)。包括月份開始那周的所有日期和月份結(jié)束那周的所有日期

fromcalendarimportCalendar

c=Calendar(firstweekday=6)

foriteminc.yeardays2calendar(2025,3):

print(item)

###############打印結(jié)果如下###############

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

[[[(1,6),(2,0),(3,1),(4,2),(5,3),(6,4),(7,5)],[(8,6),(9,0),...]]]

[[[(1,6),(2,0),(3,1),(4,2),(5,3),(6,4),(7,5)],[(8,6),(9,0),...]]]

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

calendar.TextCalendar(firstweekday=0)

Calendar子類,firstweekday為一個(gè)整數(shù),指定一周的第一天,0是星期一(默認(rèn)),6為星期日

formatmonth(theyear,themonth,w=0,l=0):以多行字符串形式返回一個(gè)月的日歷。theyear指定年,themonth指定月,w每個(gè)單元格寬度,默認(rèn)0,內(nèi)部已做處理,最小寬度為2,l每列換l行,默認(rèn)為0,內(nèi)部已做處理,至少換行1行

fromcalendarimportTextCalendar

c=TextCalendar(firstweekday=6)

print(c.formatmonth(2025,8))

###############打印結(jié)果如下###############

August2025

SuMoTuWeThFrSa

1234

567891011

12131415161718

19202122232425

262728293031

prmonth(theyear,themonth,w=0,l=0):打印formatmonth(theyear,themonth,w=0,l=0)的結(jié)果,無返回值

fromcalendarimportTextCalenadr

c=TextCalendar(firstweekday=6)

c.prmonth(2025,8)

###############打印結(jié)果如下###############

August2025

SuMoTuWeThFrSa

1234

567891011

12131415161718

19202122232425

262728293031

因?yàn)闊o返回值,所以返回的結(jié)果為None

formatyear(theyear,w=2,l=1,c=6,m=3):以多行字符串形式返回一年的日歷,w每個(gè)單元格寬度,默認(rèn)0,內(nèi)部已做處理,最小寬度為2,l每列換l行,默認(rèn)為0,內(nèi)部已做處理,至少換行1行,c月與月之間的間隔寬度,默認(rèn)為6,內(nèi)部已做處理,最小寬度為2,m表示將12個(gè)月分為m列

fromcalendarimportTextCalendar

c=TextCalendar(firstweekday=6)

print(c.format(2025,m=4))

###############打印結(jié)果如下###############

2025

JanuaryFebruaryMarchApril

SuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSa

1234561231231234567

789101112134567891045678910891011121314

14151617181920111213141516171112131415161715161718192021

21222324252627181920212223241819202122232422232425262728

2829303125262728252627282930312930

MayJuneJulyAugust

SuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSa

123451212345671234

67891011123456789891011121314567891011

13141516171819101112131415161516171819202112131415161718

20212223242526171819202122232223242526272819202122232425

272829303124252627282930293031262728293031

SeptemberOctoberNovemberDecember

SuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSaSuMoTuWeThFrSa

11234561231

234567878910111213456789102345678

910111213141514151617181920111213141516179101112131415

16171819202122212223242526271819202122

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論