如何動態(tài)創(chuàng)建Python中的HTML日歷

01

10 8

Introduction

Python'scalendar模塊是標(biāo)準(zhǔn)庫的一部分。它允許每月或每年輸出日歷,還提供其他與日歷相關(guān)的功能。

calendar模塊本身取決于datetime模塊。但我們稍后也需要datetime用于我們自己的目的,所以最好導(dǎo)入這兩個。另外,為了進行一些字符串分割,我們需要re模塊。讓's一次性導(dǎo)入它們。

默認(rèn)情況下,日歷從星期一(第0天)開始,按照歐洲公約,以星期日(第6天)結(jié)束。如果您更喜歡星期天作為一周的第一天,請使用setfirstweekday()方法將默認(rèn)值更改為第6天,如下所示:

要在兩者之間切換,可以使用sys模塊將一周的第一天作為參數(shù)傳遞。然后,您將使用if語句檢查該值,并相應(yīng)地設(shè)置setfirstweekday()方法。

02

of 10

準(zhǔn)備一年中的月份

在我們的日歷中,最好有一個日歷的標(biāo)題,它可以讀取"Python生成的日歷…"并具有當(dāng)前的月份和年份。為了做到這一點,我們需要從系統(tǒng)中獲取月份和年份。此功能是calendar提供的功能,Python可以檢索月份和年份。但我們?nèi)匀挥袉栴}。由于所有系統(tǒng)日期均為數(shù)字,不包含月份的未經(jīng)修改或非數(shù)字形式,因此我們需要列出這些月份。輸入列表。

年=[&\\35; 39;1月\##39;,
&\35; 39;2月\#39;,
&\35; 35;#39;,
'4月\\#39;
67>67>67>年.39;1月\35;#39;39;
&\\##39;39;39;2月&\##39;#39;,
'8月',
'9月',
'10月',
'11月',
'12月']

現(xiàn)在,當(dāng)我們獲得一個月的數(shù)量時,我們可以訪問列表中的該數(shù)字(減1)并獲得完整的月份名稱。

03

of 10

一天叫做"今天"

啟動main()函數(shù),讓's askdatetime為該時間。

奇怪的是,datetime模塊具有datetime類。正是從這個類中,我們調(diào)用兩個對象:now()date()。方法datetime.datetime.now()返回包含以下信息的對象:年份,月份,日期,小時,分鐘,秒和微秒。當(dāng)然,我們不需要時間信息。為了單獨剔除日期信息,我們將now()的結(jié)果傳遞給datetime.datetime.date()作為論據(jù)。結(jié)果是today現(xiàn)在包含由em破折號分隔的年份,月份和日期。

教育資源網(wǎng)_1

04

143 of 10 144

分割當(dāng)前日期

為了將這些數(shù)據(jù)分解成更多可管理的部分,我們必須將其拆分。然后,我們可以分別將這些部分分配給變量當(dāng)前年,當(dāng)前月當(dāng)前日。

要了解此代碼的第一行,請從右到左以及從內(nèi)到外進行操作。首先,我們將對象today嚴(yán)格化,以便將其作為字符串進行操作。然后,我們使用em破折號作為分隔符或令牌對其進行拆分寧夏區(qū)情常識。最后,我們將這三個值分配為列表'當(dāng)前'。

為了更清楚地處理這些值并在year中調(diào)用當(dāng)前月份的長名稱,我們將月份編號分配給current?no。然后我們可以做一些分在year的下標(biāo)中進行操作,并將月份名稱分配給當(dāng)前?month

在下一行中,需要進行一些替換。從datetime返回的日期即使在本月的前九天也是兩位數(shù)值。零可以作為持有者,但我們寧愿我們的日歷只有一位數(shù)字。因此,我們不為以字符串開頭的每個零替換任何值(因此'\ a')。最后,我們將年份分配給當(dāng)前年份,并將其轉(zhuǎn)換為一個整數(shù)。

我們稍后調(diào)用的方法將需要以整數(shù)格式輸入。因此,確保所有日期數(shù)據(jù)都以整數(shù)而非字符串形式保存非常重要。

05

of 10

HTML和CSS前言

在打印日歷之前,我們需要打印日歷的HTML前言和CSS布局。請訪問此頁面以獲取代碼,以打印日歷的CSS和HTML前言。并將代碼復(fù)制到程序文件中。該文件HTML中的CSS遵循Jennifer Kyrnin提供的關(guān)于Web設(shè)計指南的模板。如果您不了解代碼的這一部分,您可能需要咨詢她對學(xué)習(xí)CSS和HTML的幫助。最后,要自定義月份名稱,我們需要以下行:

打印'

06

of 10

打印一周中的幾天

現(xiàn)在基本布局是輸出的,我們可以自己設(shè)置日歷。日歷,在其最基本的一點,是一個表格。所以讓我們在HTML中制作一個表格:

07

222 of 10 223

獲取日歷數(shù)據(jù)

現(xiàn)在我們需要創(chuàng)建實際日歷。要獲取實際日歷數(shù)據(jù),我們需要calendar模塊'smonthcalendar()方法。這種方法需要兩個參數(shù):所需日歷的年份和月份(均為整數(shù)形式)。它返回一個列表,其中包含每月日期的列表。因此,如果我們計算返回值中的項目數(shù)量,我們將在給定月份中計算周數(shù)。

08

of 10

一個月內(nèi)的周數(shù)

知道月份中的周數(shù),我們可以為創(chuàng)建一個循環(huán),該循環(huán)通過從0到周數(shù)的range()計數(shù)。就像它一樣,它將打印出日歷的其余部分。

我們將在下一頁逐行討論此代碼。

09

of 10

The'for'檢查循環(huán)

在此范圍開始后,根據(jù)柜臺的價值從中剔除一周的日期,并分配給。然后,創(chuàng)建一個表格行來保存日歷日期。

一個for循環(huán)然后貫穿一周中的幾天,以便可以對其進行分析。calendar模塊為表中沒有有效值的每個日期打印a'0'。為了我們的目的,空白值會更好地工作,所以我們打印表格數(shù)據(jù)的工作簿而沒有這些日期的值。

接下來,如果當(dāng)天是當(dāng)前的一天,我們應(yīng)該以某種方式突出顯示它?;?strong>tdclasstoday,此頁面的CSS將導(dǎo)致當(dāng)前日期在暗背景下呈現(xiàn),而不是其他日期的淺背景。

最后,如果日期是有效值而不是當(dāng)前日期,則將其打印為表格數(shù)據(jù)。這些的確切顏色組合在CSS風(fēng)格的序言中進行。

第一個for循環(huán)的最后一行關(guān)閉該行。打印日歷后,我們的任務(wù)就完成了,我們可以關(guān)閉HTML文檔。

10

302 of 10 303

調(diào)用主()函數(shù)

由于所有這些代碼都在main()函數(shù)中,請不要忘記調(diào)用它。

只有這個簡單的日歷可以以任何需要日歷表示的方式使用。通過超鏈接HTML中的日期,可以輕松創(chuàng)建日記功能?;蛘?,可以檢查日記文件,然后反映哪些日期是由它們的顏色采取的?;蛘撸绻麑⒋顺绦蜣D(zhuǎn)換為CGI腳本,則可以動態(tài)生成它。

當(dāng)然,這只是日歷模塊和#39;功能的概述。該文檔提供了更全面的視圖。