如何动态创建Python中的HTML日历

01

10 8

Introduction

Python'scalendar模块是标准库的一部分。它允许每月或每年输出日历,还提供其他与日历相关的功能。

calendar模块本身取决于datetime模块。但我们稍后也需要datetime用于我们自己的目的,所以比较好导入这两个。另外,为了进行一些字符串分割,我们需要re模块。让's一次性导入它们。

默认情况下,日历从星期一(第0天)开始,按照欧洲公约,以星期日(第6天)结束。如果您更喜欢星期天作为一周的**天,请使用setfirstweekday()方法将默认值更改为第6天,如下所示:

要在两者之间切换,可以使用sys模块将一周的**天作为参数传递。然后,您将使用if语句检查该值,并相应地设置setfirstweekday()方法。

02

of 10

准备一年中的月份

在我们的日历中,比较好有一个日历的标题,它可以读取"Python生成的日历…"并具有当前的月份和年份。为了做到这一点,我们需要从系统中获取月份和年份。此功能是calendar提供的功能,Python可以检索月份和年份。但我们仍然有问题。由于所有系统日期均为数字,不包含月份的未经修改或非数字形式,因此我们需要列出这些月份。输入列表

年=[&\\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月']

现在,当我们获得一个月的数量时,我们可以访问列表中的该数字(减1)并获得完整的月份名称。

03

of 10

一天叫做"今天"

启动main()函数,让's askdatetime为该时间。

奇怪的是,datetime模块具有datetime类。正是从这个类中,我们调用两个对象:now()date()。方法datetime.datetime.now()返回包含以下信息的对象:年份,月份,日期,小时,分钟,秒和微秒。当然,我们不需要时间信息。为了单独剔除日期信息,我们将now()的结果传递给datetime.datetime.date()作为论据。结果是today现在包含由em破折号分隔的年份,月份和日期。

教育资源网_1

04

143 of 10 144

分割当前日期

为了将这些数据分解成更多可管理的部分,我们必须将其拆分。然后,我们可以分别将这些部分分配给变量当前年当前月当前日

要了解此代码的**行,请从右到左以及从内到外进行操作。首先,我们将对象today严格化,以便将其作为字符串进行操作。然后,我们使用em破折号作为分隔符或令牌对其进行拆分宁夏区情常识。最后,我们将这三个值分配为列表'当前'。

为了更清楚地处理这些值并在year中调用当前月份的长名称,我们将月份编号分配给currentØno。然后我们可以做一些分在year的下标中进行操作,并将月份名称分配给当前Åmonth

在下一行中,需要进行一些替换。从datetime返回的日期即使在本月的前九天也是两位数值。零可以作为持有者,但我们宁愿我们的日历只有一位数字。因此,我们不为以字符串开头的每个零替换任何值(因此'\ a')。最后,我们将年份分配给当前年份,并将其转换为一个整数。

我们稍后调用的方法将需要以整数格式输入。因此,确保所有日期数据都以整数而非字符串形式保存非常重要。

05

of 10

HTML和CSS前言

在打印日历之前,我们需要打印日历的HTML前言和CSS布局。请访问此页面以获取代码,以打印日历的CSS和HTML前言。并将代码复制到程序文件中。该文件HTML中的CSS遵循Jennifer Kyrnin提供的关于Web设计指南的模板。如果您不了解代码的这一部分,您可能需要咨询她对学习CSS和HTML的帮助。最后,要自定义月份名称,我们需要以下行:

打印'

06

of 10

打印一周中的几天

现在基本布局是输出的,我们可以自己设置日历。日历,在其最基本的一点,是一个表格。所以让我们在HTML中制作一个表格:

07

222 of 10 223

获取日历数据

现在我们需要创建实际日历。要获取实际日历数据,我们需要calendar模块'smonthcalendar()方法。这种方法需要两个参数:所需日历的年份和月份(均为整数形式)。它返回一个列表,其中包含每月日期的列表。因此,如果我们计算返回值中的项目数量,我们将在给定月份中计算周数。

08

of 10

一个月内的周数

知道月份中的周数,我们可以为创建一个循环,该循环通过从0到周数的range()计数。就像它一样,它将打印出日历的其余部分。

我们将在下一页逐行讨论此代码。

09

of 10

The'for'检查循环

在此范围开始后,根据柜台的价值从中剔除一周的日期,并分配给。然后,创建一个表格行来保存日历日期。

一个for循环然后贯穿一周中的几天,以便可以对其进行分析。calendar模块为表中没有有效值的每个日期打印a'0'。为了我们的目的,空白值会更好地工作,所以我们打印表格数据的工作簿而没有这些日期的值。

接下来,如果当天是当前的一天,我们应该以某种方式突出显示它。基于tdclasstoday,此页面的CSS将导致当前日期在暗背景下呈现,而不是其他日期的浅背景。

最后,如果日期是有效值而不是当前日期,则将其打印为表格数据。这些的确切颜色组合在CSS风格的序言中进行。

**个for循环的最后一行关闭该行。打印日历后,我们的任务就完成了,我们可以关闭HTML文档。

10

302 of 10 303

调用主()函数

由于所有这些代码都在main()函数中,请不要忘记调用它。

只有这个简单的日历可以以任何需要日历表示的方式使用。通过超链接HTML中的日期,可以轻松创建日记功能。或者,可以检查日记文件,然后反映哪些日期是由它们的颜色采取的。或者,如果将此程序转换为CGI脚本,则可以动态生成它。

当然,这只是日历模块和#39;功能的概述。该文档提供了更全面的视图。