每日智识
柔彩主题三 · 更轻盈的阅读体验

Python日期时间库:处理时间不再头疼

发布时间:2026-01-01 23:21:24 阅读:268 次

每天早上七点,手机闹钟准时响起。你可能没意识到,背后就是一段代码在计算时间。在写 Python 脚本时,处理时间几乎无处不在——记录日志、安排任务、分析数据,都绕不开日期和时间。

datetime:最常用的起点

Python 自带的 datetime 模块是大多数人最先接触的工具。它能轻松创建当前时间:

from datetime import datetime

now = datetime.now()
print(now)  # 输出类似:2025-04-05 08:30:15.123456

想只保留年月日?用 date() 方法就行:

today = datetime.now().date()
print(today)  # 输出:2025-04-05

格式化输出:让时间更易读

从数据取出的时间常常是一长串数字,用户可不买账。这时候 strftime() 就派上用场了:

formatted = now.strftime("%Y年%m月%d日 %H:%M")
print(formatted)  # 输出:2025年04月05日 08:30

反过来,如果你收到一个字符串形式的日期,比如 "2025-03-20",可以用 strptime() 把它转成 datetime 对象:

date_str = "2025-03-20"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")

timedelta:做时间的加减法

想知道三天后是周几?或者统计过去一周的登录次数?timedelta 可以让你对时间做算术:

from datetime import timedelta

three_days_later = now + timedelta(days=3)
print(three_days_later)

它支持 weeks、days、hours、minutes 等多种单位,灵活得很。

时区问题:别让时间出错

你的服务器在东京,用户在北京,时间差一小时。如果不处理时区,日志里的“登录时间”就可能让人困惑。Python 3.9+ 推荐使用 zoneinfo 模块:

from datetime import datetime
from zoneinfo import ZoneInfo

beijing_time = datetime.now(ZoneInfo("Asia/Shanghai"))
tokyo_time = datetime.now(ZoneInfo("Asia/Tokyo"))
print(beijing_time)
print(tokyo_time)

这样就能清楚区分不同时区的时间点。

dateutil:更聪明的解析

标准库功能够用,但遇到模糊输入就容易卡壳。比如 "明天下午三点" 或者 "2025/4/5" 这种不规范格式,dateutilparser 能智能识别:

from dateutil import parser

date1 = parser.parse("2025/4/5")
date2 = parser.parse("Apr 5, 2025 at 3pm")
print(date1)  # 成功解析
print(date2)  # 也能搞定

需要额外安装:pip install python-dateutil,但它省下的调试时间绝对值回票价。

实际场景:记录脚本运行耗时

写个爬虫,想看看总共跑了多久?简单加两行就行:

start = datetime.now()

# 模拟一些操作
import time
time.sleep(2)

end = datetime.now()
duration = end - start
print(f"耗时:{duration.total_seconds():.2f} 秒")

这种小技巧在调试和优化时特别实用。