0Pricing
Python Academy · 课时

格式化与解析

使用 strftime 和 strptime

格式化与解析 是 CoddyKit 上的免费 Python Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。

为什么要格式化和解析?

计算机会将日期存储为对象,但人类会将日期读取为文本。格式化会将日期时间转换为字符串,解析则会将字符串转换回日期时间。

  • strftime = 字符串 FROM 时间(格式化)。
  • strptime = 字符串 PARSE 时间(解析)。
from datetime import datetime
now = datetime(2026, 5, 30, 14, 5)
print(now)

您的第一个 strftime

在日期时间上调用 .strftime(format)。格式代码以 % 开头:%Y 表示 4 位数年份,%m 表示月份,%d 表示日期。

from datetime import datetime
d = datetime(2026, 5, 30)
print(d.strftime('%Y-%m-%d'))

格式化时间部分

时间代码:%H 表示小时(00-23),%M 表示分钟,%S 表示秒。您可以随意将它们与字面文本组合。

from datetime import datetime
d = datetime(2026, 5, 30, 9, 7, 3)
print(d.strftime('%H:%M:%S'))

便于人类阅读的名称

有些代码会生成名称:%A 表示完整的星期名称,%B 表示完整的月份名称,%b 表示月份缩写。

from datetime import datetime
d = datetime(2026, 5, 30)
print(d.strftime('%A, %B %d, %Y'))

12 小时制与 AM/PM

使用 %I 表示 12 小时制的小时,使用 %p 表示 AM 或 PM。这在面向用户的显示中很常见。

from datetime import datetime
d = datetime(2026, 5, 30, 14, 30)
print(d.strftime('%I:%M %p'))

使用 strptime 进行解析

datetime.strptime(text, format) 会将字符串读取为日期时间。格式必须与文本逐项完全匹配。

from datetime import datetime
text = '2026-05-30'
d = datetime.strptime(text, '%Y-%m-%d')
print(d)
print(type(d))

同时解析日期和时间

在格式中加入时间代码,即可解析完整的时间戳。文本中的每个分隔符(短横线、空格、冒号)也必须出现在模式中。

from datetime import datetime
text = '30/05/2026 14:05'
d = datetime.strptime(text, '%d/%m/%Y %H:%M')
print(d.year, d.hour, d.minute)

往返:先解析再格式化

一种常见的工作流程是解析传入的文本,执行一些逻辑,然后重新格式化文本以便输出,甚至可以使用不同的布局。

from datetime import datetime
raw = '2026-05-30'
d = datetime.strptime(raw, '%Y-%m-%d')
pretty = d.strftime('%B %d, %Y')
print(pretty)

ISO 格式快捷方式

.isoformat() 会生成标准的 ISO 8601 字符串,而 datetime.fromisoformat() 无需格式代码即可将其读取回来。

from datetime import datetime
d = datetime(2026, 5, 30, 14, 5)
s = d.isoformat()
print(s)
back = datetime.fromisoformat(s)
print(back == d)

处理解析错误

如果文本与格式不匹配,strptime 会引发 ValueError。当输入可能格式错误时,请将其放在 try/except 中。

from datetime import datetime
try:
    datetime.strptime('not-a-date', '%Y-%m-%d')
except ValueError as e:
    print('Could not parse:', e)

一年中的第几天及更多内容

其他代码:%j 表示一年中的第几天(001-366),%w 表示用数字表示的星期几(0=星期日)。这些代码在报告中很实用。

from datetime import datetime
d = datetime(2026, 5, 30)
print('Day of year:', d.strftime('%j'))

快速检查

现在有字符串 '2026-05-30'。哪个调用可以将它转换为 datetime 对象?

回顾:格式化与解析

请记住:

  • strftime(fmt) 会将日期时间转换为字符串。
  • strptime(text, fmt) 会将字符串转换为日期时间。
  • 常用代码:日期使用 %Y %m %d,时间使用 %H %M %S,名称使用 %A %B。
  • isoformat() 和 fromisoformat() 会自动处理 ISO 标准。
from datetime import datetime
d = datetime.strptime('2026-05-30 14:05', '%Y-%m-%d %H:%M')
print(d.strftime('%A at %I:%M %p'))

常见问题解答

「格式化与解析」课时是免费的吗?

是的 — 「格式化与解析」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。

「格式化与解析」这节课中我会学到什么?

使用 strftime 和 strptime 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「格式化与解析」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python Academy 课中编写并运行代码吗?

能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. date、time、datetime
  2. Timedelta 与算术运算
  3. 格式化与解析
  4. 使用 zoneinfo 处理时区
← 返回 Python Academy