本文从基础到实战,拆解
datetime模块的核心用法与避坑要点。
datetime模块包含 5 个核心类,覆盖日期、时间、时间差、时区的全维度处理:
最常用的场景是获取系统当前日期 / 时间,核心方法如下:
from datetime import date, time, datetime
按需创建指定的日期 / 时间实例,注意参数顺序为年、月、日、时、分、秒、微秒,且月份从 1 开始(区别于其他语言的 0 起始):
from datetime import date, time, datetime
使用strftime()方法将时间对象转为指定格式的字符串,核心格式符如下:
示例代码:
from datetime import datetimenow = datetime.now()
使用strptime()方法将字符串转为datetime对象,格式符必须与字符串格式完全匹配:
from datetime import datetime
timedelta用于表示时间间隔,支持与datetime对象做加减运算,常用参数:days(天)、hours(小时)、minutes(分钟)、seconds(秒)、weeks(周)。
from datetime import datetime, timedeltanow = datetime.now()
datetime/date对象支持直接用>、<、==、!=等运算符比较:
from datetime import datetimedt1 = datetime(2025, 12, 9, 14, 30)
dt2 = datetime(2025, 12, 10, 10, 0)print(dt1 < dt2)
时间戳是「从 1970-01-01 00:00:00 UTC 到当前时间的秒数」,datetime支持与时间戳互转:
from datetime import datetime
默认的datetime对象是「天真时间」(无时区),处理跨时区业务时需显式指定时区:
from datetime import datetime
from zoneinfo import ZoneInfo
比如生成 2025 年 12 月的所有日期:
from datetime import date, timedeltastart_date = date(2025, 12, 1)
end_date = date(2025, 12, 31)date_list = []
current_date = start_date
while current_date <= end_date:date_list.append(current_date)current_date += timedelta(days=1)
%Y是 4 位年份,%y是 2 位年份,混用会导致解析失败:
%H是 24 小时制,%I是 12 小时制(需搭配 % p):
timedelta仅支持天 / 小时等固定间隔,无法直接加减月份(不同月份天数不同),需借助dateutil库:
datetime/date对象创建后无法修改属性,需重新创建:
from datetime import datetimedt = datetime(2025, 12, 9)