Python3標準庫 calendar處理日期

2022-01-20 09:48:12 字數 2852 閱讀 1535

calendar模組第一了calendar類,其中封裝了一些值的計算,如給定的乙個月或一年中的周日期。另外,textcalendar和htmlcalendar類可以生成經過預格式化的輸出。

prmonth()方法是乙個簡單的函式,可以生成月的格式化文字輸出。

import

calendar

c =calendar.textcalendar(calendar.sunday)

c.prmonth(2017, 7)

這個例子按照美國的慣例,將textcalendar配置為一周從星期日開始。而預設則會使用歐洲慣例,即一周從星期一開始。這個例子會生成以下輸出。

利用htmlcalendar和formatmonth()可以生成乙個類似的html**。顯示的輸出看起來與純文字的版本大致是一樣的,不過會用html標記包圍。各個表單元格有乙個類屬性對應星期幾,從而可以通過css制定html的樣式。 

除了可用的預設格式外,要想以其他的某種格式生成輸出,可以使用calendar計算日期,並把這些值組織為周和月區間,然後迭代處理結果。對於這個任務,calendar的weekheader()、monthcalendar()和yeardays2calendar()方法尤其有用。

呼叫yeardays2calendar()會生成乙個由"月行"列表構成的序列。每個月列表包含一些月,每個月是乙個周列表。週是元組列表,元組則由日編號(1~31)是星期幾編號(0~6)構成。當月以外的日編號為0。

import

calendar

import

pprint

cal =calendar.calendar(calendar.sunday)

cal_data = cal.yeardays2calendar(2020, 3)

print('

len(cal_data) :

', len(cal_data))

top_months =cal_data[0]

print('

len(top_months) :

', len(top_months))

first_month =top_months[0]

print('

len(first_month) :

', len(first_month))

print('

first_month:')

pprint.pprint(first_month, width=65)

呼叫yeardays2calendar(2020,3)會返回2023年的資料,按每行3個月組織。

這等價於formatyear()使用的資料。 

import

calendar

cal =calendar.textcalendar(calendar.sunday)

print(cal.formatyear(2020, 2, 1, 1, 3))

如果給定相同的引數,則formatyear()會生成以下輸出。

如果不是為了當前本地化環境,而是要為另外乙個本地化環境生成乙個格式化的日曆,那麼可以使用localetextcalendar或localehtmlcalendar。

import

calendar

c = calendar.localetextcalendar(locale='

en_us')

c.prmonth(2020, 2)

print

()c = calendar.localetextcalendar(locale='

fr_fr')

c.prmonth(2020, 3)

一周的第一天不屬於本地化環境的設定。這個值取自calendar類的引數,常規的textcalendar類也是如此。

儘管calendar模組主要強調採用不同格式列印完整的日曆,但它還是提供了另外一些函式,對採用其他方式處理日期很有用,如為乙個重複事件計算日期。例如,python atlanta使用者組每月的第二個星期四召開一次會議。要計算一年中的會議日期,可以使用monthcalendar()的返回值。

import

calendar

import

pprint

pprint.pprint(calendar.monthcalendar(2020, 7))

有些日期的值為0。這說明這幾天對應的星期幾儘管在給定的當前月份裡,但它們實際上屬於另乙個月。

一周中的第一天預設為星期一。可以通過呼叫setfirstweekday()來改變這個設定,不過由於calendar模組包含了一些常量來索引monthcalendar()返回的日期區間,所以在這種情況下更方便的做法是跳過這一步。

要計算一年的會議日期,假設是每個月的第二個星期四,那麼可以檢視monthcalendar()的輸出,找到星期四對應的日期。乙個月的第一周和最後一周都要填充0值作為佔位符,分別表示相應日期實際上在前乙個月或下乙個月。例如,如果乙個月從星期五開始,那麼第一周星期四位置上的值就是0。

Python3標準庫 statistics統計計算

statistics模組實現了很多常用的統計公式,允許使用python的各種數值型別 int float decimal和fraction 來完成高效計算。共支援3種形式的平均值 均值 mean 中值或中位數 median 以及眾數 mode 可以用mean 計算算術平均值。from statist...

Python3標準庫學習 二

這個模組包含 python 中使用的內建函式.一般不用手動匯入這個模組 python會幫你做好一切.python允許你實時地建立函式引數列表.只要把所有的引數放入乙個元組中或者字典中 示例 如下 encoding gb2312 created on 2012 5 1 author administr...

python3 標準型別

number 數字 string 字串 list 列表 tuple 元組 sets 集合 dictionary 字典 python3 支援 int float bool complex 複數 1 python可以同時為多個變數賦值,如a,b 1,2。2 乙個變數可以通過賦值指向不同型別的物件。3 數...