HOWTO · Python
在 Python 中从日期时间获取小时和分钟
本教程演示了如何使用 Python 中的 datetime 模块获得小时和分钟的时间。
本页内容
在 Python 中获取小时和分钟,可以先将日期时间文本解析为 datetime 对象,再读取其 .hour 和 .minute 属性。获取当前时间时,可以使用 datetime.now(),再通过 strftime() 格式化,或提取其 .time() 值。若需要统一的 24 小时制 HH:MM 字符串,可以使用 %H:%M,或将数字格式化为两位数。
从指定的 datetime 获取小时和分钟
已知日期和时间格式时,可以使用 datetime.strptime() 解析字符串。格式字符串必须与输入相符:%d/%m/%y %H:%M 表示日、月、两位数年份,接着是 24 小时制时间。在这个例子中,03/02/21 表示 2021 年 2 月 3 日,解析后的对象中小时为 16,分钟为 30。
运行以下示例:
本节中的代码以及显示的标签或输出仍为英文。
from datetime import datetime
specific_time = datetime.strptime("03/02/21 16:30", "%d/%m/%y %H:%M")
hour = specific_time.hour
minute = specific_time.minute
formatted_time = f"{hour:02d}:{minute:02d}"
print(formatted_time)
.hour 和 .minute 属性的值是整数,可以直接用于计算或比较。:02d 格式说明符会让每个整数至少显示两位,不足时在前面补零,因此像 8:05 这样的时间也能保持 HH:MM 格式。两位数年份指令 %y 会按照 Python 的日期解析规则解释年份;若要避免歧义,建议使用四位数年份 %Y,例如 %d/%m/%Y %H:%M。
输入的每个部分都要使用相符的格式指令:%m/%d/%Y 表示月/日/四位数年份,%d/%m/%Y 表示日/月/四位数年份。如果解析失败,先核对输入字符串中的分隔符和各部分顺序是否与格式指令相符。datetime 还会保留日期和秒;读取 .hour 和 .minute 不会改变原对象。
该链接目前指向英文 API 页面;提供的目标清单中没有简体中文页面。
使用 strftime() 获取当前时间的小时和分钟
调用 datetime.now(),可以根据系统本地时钟取得一个 datetime。然后使用 strftime() 将小时和分钟转换为显示字符串。%H 会生成范围为 00 到 23 的 24 小时制小时数,并在需要时补零;%M 会生成范围为 00 到 59 的分钟数,并在需要时补零。
本节中的代码以及显示的标签或输出仍为英文。
from datetime import datetime
current_time = datetime.now()
formatted_time = current_time.strftime("%H:%M")
print(formatted_time)
打印出的值会随时钟变化,因此不会是固定字符串。如果后续代码还需要日期或其他组成部分,请保留 current_time。若要显示 12 小时制,%I 会生成 01 到 12 之间的小时数;加上 %p 可显示当前区域设置中的 AM 或 PM 标记,例如 "%I:%M %p"。
使用 .time() 获取当前时间的小时和分钟
如果需要将时间部分作为对象使用,而不是直接得到格式化字符串,可以使用 .time()。它会返回一个 time 对象,其 .hour 和 .minute 属性可以像 datetime 对象中的对应属性一样读取和格式化。
本节中的代码以及显示的标签或输出仍为英文。
from datetime import datetime
current_time = datetime.now().time()
hour = current_time.hour
minute = current_time.minute
print(f"{hour:02d}:{minute:02d}")
后续逻辑需要数值时,这种方式很方便;如果希望立即得到文本,则使用 strftime()。这两种获取当前时间的示例都依赖系统时钟,运行过程中可能跨入下一分钟。datetime.now() 默认使用本地时间。如果应用需要特定时区,应先使用相应时区创建一个带时区信息的 datetime,再格式化或提取其中的时间;否则,本地时钟的值可能不代表预期地点的时间。