高级 Python 开发课程
第 章
>
第 级
字符串与时间模块
日期/时间模块
目标
使用 Date & Time 模块函数调整记录并设置供应品的运输日期。
新建施工区域附属楼的底层是一个仓库,里面存放着一些最近交付的、已打包并准备运往新施工区域各处的供应品。它们需要贴上正确的日期和时间标签,并确保已贴标签的记录中包含所有相关信息。为此,我们可以花时间手动编写和格式化日期和时间,但使用日期和时间模块会更快捷。
通过编写 import datetime 导入日期和时间模块,这将解锁一系列强大的函数,使你能够读取和设置格式化的日期和时间,并将其存储在对象中。你也可以使用:from datetime import timezone, timedelta 来设置时区。导入该模块后,可使用以下函数:
datetime.datetime(): 允许你设置并存储你选择的时间,接受以下几个参数:year、month、day、hour、minute、second、microsecond、timezone。你不必输入所有参数,只需输入你想使用的参数即可。datetime.datetime.now(): 返回你当前的日期和时间,就像钟表上显示的一样。datetime.datetime.date(): 仅返回日期部分,不包含时间。datetime.datetime.time(): 仅返回时间部分,不包含日期。datetime.datetime.timestamp(): 以 UNIX 代码的形式返回日期时间的时间戳。timezone(): 允许你为日期和时间参数设置时区。datetime.strftime(): 允许你提取日期和时间的特定信息,并使用特定代码按照你的喜好格式化。就我们的目的而言,我们将使用以下代码:"%a": 星期几(缩写)"%d": 月中的日期"%B": 月份名称(完整写法)"%I": 小时(12 小时制)"%M": 分钟"%p": 上午/下午"%x": 本地日期格式"%X": 本地时间格式"%j": 一年的第几天"%U": 一年的第几周"%z": UTC 时区
首先,前往带有浅色 X 标记的区域并面向书桌,使用 read() 函数检查装运的打包日期以及项目的开始和结束日期。记录文档中提供的开始和结束日期(格式为月/日/年)。备忘录中最初书写的前三(3)个数据点以及时区已在代码编辑器中预先写好,以便后续函数使用。
在同一位置,创建一个名为 today 的变量,并将 datetime.datetime.now() 的返回值存入其中。使用 str() 函数将该值转换为字符串,使其可读,例如:today = str(datetime.datetime.now())。接着,使用 display() 函数将今天的日期记录在备忘录上,这样就为运输分配设置了日期,并且你可以开始向必要区域添加缺失的数据点。
前往靠近书桌旁带有金色 X 标记的区域,我们将计算并记录该项目所需的天数。编辑器中已有两个变量 start 和 end 用于存储日期时间。请在提供的区域记下你先前读取的开始和结束日期。创建一个名为 result 的变量,并将 end 与 start 变量相减的结果存入其中。使用 str() 函数将该值转换为可读字符串格式,例如:result = str(end-start)。接着,使用 write() 函数记录下 result 变量,以标明所需时间。
接下来,我们将前往位于红地毯旁边的金色 X 标记区域,然后移动到左侧栏中红地毯箱子旁的 X 标记处。在这里,我们将使用 datetime() 添加装箱日期中缺失的特定部分。编辑器中预先分配给变量 red_date 的日期将被用来提取各种数据,并用于给箱子贴标签。
对于红色地毯区域:
-
在金色 X 标记处,面向箱子,创建一个名为
red_days的变量,将red_date变量中的日期(不含时间)通过date()方法获取,并转换为字符串,例如:red_days = str(red_date.date())。使用write()函数利用red_days为箱子贴标签。 -
在浅色 X 标记处,面向箱子,创建一个名为
red_time的变量,将red_date变量中的时间(不含日期)通过time()方法获取,并转换为字符串,例如:red_time = str(red_date.time())。使用write()函数利用red_time为箱子贴标签。 -
在暗色 X 标记处,面向箱子,创建一个名为
red_timestamp的变量,将red_date变量计算得到的时间戳存入其中,例如:red_timestamp = red_date.timestamp()。使用write()函数利用red_timestamp为箱子贴标签。
接下来,移动至蓝色地毯箱子前的 X 标记区域。与之前类似,这里也有三个不同颜色的 X 标记,此处引用预先写好的 blue_date 变量来完成标签。沿着该列,使用 strftime() 函数为运输标签添加缺失的元素。与之前的函数不同,此函数需要特定代码来提取并格式化目标日期中的元素。例如,如果我们想获取 blue_date 变量代表的星期几,则使用代码 "%a" 与 strftime() 函数,如:blue_date.strftime("%a")。
对于蓝色地毯区域的 X 标记,使用 strftime() 函数和所需的特定代码。请根据要求查看前述代码列表。
对于蓝色地毯:
-
在金色 X 标记处,面向箱子,创建一个名为
blue_weekday的变量,将blue_date变量中代表星期几的部分通过strftime()获取,格式为:blue_day = blue_date.strftime("%a")。接着,创建另一个变量blue_day并存储blue_date变量中代表月中日的信息,通过strftime()获取。再创建一个变量blue_month并存储blue_date变量中代表完整月份名称的信息,同样通过strftime()获取。将blue_weekday、blue_day和blue_month变量插入到预先写好的write()函数中。 -
在浅色 X 标记处,面向箱子,创建一个名为
blue_hour的变量,将blue_date变量中代表12 小时制小时的信息通过strftime()获取。接着,创建一个变量blue_minute并存储blue_date变量中代表分钟的信息,通过strftime()获取。再创建一个变量blue_meridian并存储blue_date变量中代表上午/下午的信息,通过strftime()获取。将blue_hour、blue_minute和blue_meridian变量插入到预先写好的write()函数中。 -
在暗色 X 标记处,面向箱子,创建一个名为
blue_local_date的变量,将blue_date变量中代表本地日期格式的信息通过strftime()获取。再创建一个变量blue_local_time并存储blue_date变量中代表本地时间格式的信息,通过strftime()获取。将blue_local_date、blue_local_time和blue_meridian变量插入到预先写好的display()函数中。
最后,我们将前往位于绿色地毯旁的金色 X 标记区域,然后移动到右侧栏中绿色地毯箱子旁的 X 标记处。在这里,我们将继续使用 strftime() 添加装箱日期中缺失的特定部分。编辑器中预先分配给变量 green_date 的日期将被用来提取各种数据,并用于给箱子贴标签。
对于绿色地毯:
-
在金色 X 标记处,面向箱子,创建一个名为
green_day的变量,将green_date变量中代表一年的第几天的信息通过strftime()获取。使用write()函数利用green_day为箱子贴标签。 -
在浅色 X 标记处,面向箱子,创建一个名为
green_week的变量,将green_date变量中代表一年的第几周的信息通过strftime()获取。使用write()函数利用green_week为箱子贴标签。 -
在暗色 X 标记处,面向箱子,创建一个名为
green_timezone的变量,将green_date变量中代表UTC 时区的信息通过strftime()获取。使用write()函数利用green_timezone为箱子贴标签。
一旦所有带有不同颜色地毯旁的 X 标记处的标签都被记录下来,该关卡就完成了。