strptime + strftime + timedelta 终极区分(一次看懂)

我把这三个最容易混淆的时间工具放在一起,用最简单的话 + 一张表彻底讲清楚,你马上就能分清!

一、一句话分清三者(核心)

函数 / 类 作用 方向 / 类型 口诀
strptime 时间字符串 → 转成 时间对象 解析(读) p = parse
strftime 时间对象 → 转成 时间字符串 格式化(写) f = format
timedelta 时间的加减法(几天、几小时、几分钟) 时间运算 delta = 差值

简单总结:

  • strptime / strftime:管字符串 ↔ 时间对象互相转换
  • timedelta:管时间计算(比如 3 天后、2 小时前)

二、详细用法(带完整示例)

先统一导入:

from datetime import datetime, timedelta  # 用 datetime 模块更常用

1. strptime:字符串 → 时间对象(解析)

用途:你有一个文本时间,要让电脑能看懂它。

# 字符串时间
time_str = "2025-12-25 15:30:00"

# 解析成 时间对象
dt = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print(dt)  # 2025-12-25 15:30:00

2. strftime:时间对象 → 字符串(格式化)

用途:把时间对象,变成你想要的展示格式。

# 时间对象
dt = datetime.now()

# 转成字符串
result = dt.strftime("%Y年%m月%d日 %H:%M")
print(result)  # 2025年12月25日 15:30

3. timedelta:时间加减(计算)

用途:只能用来算时间差,不能单独表示时间!

支持:天、小时、分钟、秒、毫秒

# 当前时间
now = datetime.now()

# 1. 加 3天
after_3d = now + timedelta(days=3)

# 2. 减 2小时
before_2h = now - timedelta(hours=2)

# 3. 组合:1天2小时30分钟
mix = now + timedelta(days=1, hours=2, minutes=30)

三、三者联动实战(最常用场景)

需求:

  1. 有一个字符串时间 "2025-12-25 12:00:00"
  2. 算出它 2 天后、3 小时前 的时间
  3. 再转成好看的中文格式输出
from datetime import datetime, timedelta

# 1. strptime:字符串 → 时间对象
dt = datetime.strptime("2025-12-25 12:00:00", "%Y-%m-%d %H:%M:%S")

# 2. timedelta:时间计算(+2天,-3小时)
new_dt = dt + timedelta(days=2, hours=-3)

# 3. strftime:时间对象 → 新字符串
result = new_dt.strftime("%Y年%m月%d日 %H时%M分")

print(result)
# 输出:2025年12月27日 09时00分

四、终极记忆口诀

  1. strptime:解析字符串 → 得时间对象(输入用
  2. strftime:格式化对象 → 得字符串(输出用
  3. timedelta:只做时间加减(计算用

总结

  • 转换strptime / strftime
  • 计算timedelta
  • 三者经常搭配使用,是 Python 处理时间的标准三件套
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐