数码知识屋
霓虹主题四 · 更硬核的阅读氛围

Python日期时间库:轻松处理时间的实用指南

发布时间:2026-01-01 23:21:02 阅读:51 次

datetime模块:处理日期和时间的基础工具

在日常开发中,处理时间是绕不开的任务。比如记录用户登录时间、计算订单有效期,或者安排定时任务,这时候Python自带的datetime模块就派上用场了。

它提供了几个核心类:datetimedatetimetimedelta,分别用于表示具体时间点、日期、时间以及时间差。

from datetime import datetime, date, timedelta

# 获取当前时间
now = datetime.now()
print(now)  # 输出类似:2024-04-05 14:30:25.123456

# 只获取今天日期
today = date.today()
print(today)  # 输出:2024-04-05

# 计算三天后的时间
future = now + timedelta(days=3)
print(future)

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

默认打印出来的时间字符串虽然完整,但不够友好。比如日志里显示“2024-04-05T14:30:25”不如“4月5日下午2:30”直观。strftime()方法可以按需定制格式。

# 将时间转为中文习惯的格式
dt = datetime.now()
formatted = dt.strftime('%Y年%m月%d日 %H:%M')
print(formatted)  # 输出:2024年04月05日 14:30

# 常见格式符号说明
# %Y:四位年份;%m:月份(01-12);%d:日期(01-31)
# %H:小时(24小时制);%M:分钟;%S:秒

解析字符串时间:从文本还原成时间对象

很多时候时间是以字符串形式存在的,比如从网页表单或配置文件读取的“2024/04/05”。这时可以用strptime()把它转成datetime对象进行计算。

# 解析自定义格式的时间字符串
date_str = '2024/04/05'
date_obj = datetime.strptime(date_str, '%Y/%m/%d')
print(date_obj)  # 输出:2024-04-05 00:00:00

时区处理:避免跨地区出错

如果你的应用服务全球用户,忽略时区可能会导致问题。比如北京时间比UTC早8小时,直接用本地时间判断“是否超过截止时间”可能误判。

Python 3.9+ 的zoneinfo模块能方便地处理时区,无需额外安装依赖。

from datetime import datetime
from zoneinfo import ZoneInfo

# 创建带时区的时间对象
beijing_time = datetime.now(ZoneInfo('Asia/Shanghai'))
utc_time = datetime.now(ZoneInfo('UTC'))

print(beijing_time)  # 显示带+08:00偏移
print(utc_time)

第三方:dateutil让操作更简单

标准库功能够用,但有些场景稍显繁琐。比如想解析“2024-04-05”、“Apr 5, 2024”这类多种格式混合的字符串,dateutilparser就特别省心。

先通过pip install python-dateutil安装,然后使用:

from dateutil import parser

# 自动识别多种时间格式
date1 = parser.parse('2024-04-05')
date2 = parser.parse('Apr 5, 2024 at 3:30 PM')
print(date1)
print(date2)

这个库还能轻松处理相对时间,比如“下周一”、“三天前”,对自然语言时间的支持很实用。