你还在用 time.sleep() 和 time.time()?
别闹了,time 模块连时区都不支持。
写个定时任务都得手动算 UTC 偏移,简直自虐。
datetime 虽好,但一碰夏令时就翻车。
来看看这三个库,才是 Python 时间处理的真正答案。
第一个:pendulum —— 优雅到让人想哭 😭
import pendulum
now = pendulum.now('Asia/Shanghai')
print(now) # 2026-03-13T19:06:00+08:00
# 加三天?一行搞定
future = now.add(days=3)
print(future.format('YYYY-MM-DD HH:mm:ss'))
自动处理时区转换,再也不用手动查 UTC+8 还是 +9。
parse 方法智能到离谱,连 “next Monday at 3pm” 都能解析。
immutable 设计,避免意外修改时间对象——这细节,专业!
第二个:arrow —— 简洁如诗,功能如刀 🔪
import arrow
utc = arrow.utcnow()
local = utc.to('Asia/Shanghai')
print(local.humanize()) # “2 分钟前”
# 解析模糊时间?小菜一碟
dt = arrow.get("2026-03-13")
print(dt.shift(hours=5).format('HH:mm'))
humanize() 输出“3小时前”,用户看了直呼贴心。
链式调用流畅得像写英语句子,读代码都变享受。
虽然作者说“不再积极维护”,但稳定性和兼容性依然扛打。
第三个:dateutil —— 老派但狠,专治各种不服 💪
from dateutil import parser, relativedelta
from datetime import datetime
# 连这种格式都能猜对?
dt = parser.parse("Mar 13, 2026 at 7:06 PM")
print(dt) # 2026-03-13 19:06:00
# 加一个月?考虑2月29日那种变态情况?
now = datetime(2026, 1, 31)
next_month = now + relativedelta.relativedelta(months=1)
print(next_month) # 2026-02-28 00:00:00 ✅
relativedelta 是 datetime.timedelta 的究极进化体。
parser 模块堪称时间界的“通灵者”,乱七八糟格式照单全收。
被 pandas、airflow 等大项目深度依赖,可靠性无需多言。
性能对比?别光看快慢,看场景!
我本地跑了个小测试(10万次操作):
pendulum 和 arrow 稍慢,但换来的是代码可读性和正确性暴增。
在 Web 后端或数据分析中,这点开销根本不值一提。
除非你在高频交易系统里写时间逻辑——那另说。
别再让时间成为你的 bug 源头
我见过太多人因为夏令时切换,凌晨两点的数据全乱套。
也见过团队为了“加一个月”吵三天,最后发现 1 月 31 日加一个月该是 2 月 28 日还是 3 月 3 日。
这些坑,早有轮子替你填平了。
选哪个?我的私心建议:
- 新项目?直接 pendulum,API 设计太舒服,文档也清晰。
- 已有项目轻量改造?用 arrow,侵入性低,上手快。
- 需要极致兼容或做复杂日期运算?dateutil 是老将,稳如泰山。
time 模块不是不能用,
只是它属于 2000 年代的 Python。
现在都 2026 年了,
该换装备了,兄弟。