当前位置: 首页 > 开发者资讯

Python如何进行日期时间处理? datetime模块常用操作有哪些?

  在 Python 开发中,日期时间处理是高频需求,无论是日志记录、数据统计,还是定时任务,都需精准操作日期时间。Python 标准库中的datetime模块提供了完整的日期时间处理工具,支持日期创建、格式转换、差值计算等核心功能,无需依赖第三方库即可满足多数场景需求。小编将拆解datetime模块的核心组件,详解常用操作,助你高效处理日期时间。

  一、datetime 模块核心组件:四类核心对象

  datetime模块通过四个核心对象封装日期时间信息,各对象职责明确,覆盖不同处理场景:

  datetime.date:仅处理日期(年、月、日),如 2025-08-30;

  datetime.time:仅处理时间(时、分、秒、微秒),如 14:30:45.123456;

  datetime.datetime:同时处理日期与时间,如 2025-08-30 14:30:45,最常用;

  datetime.timedelta:表示时间间隔(如 2 天、3 小时),用于日期时间差值计算。

python1.png

  二、datetime 模块常用操作:从创建到应用

  (一)创建日期时间对象:获取当前或指定日期时间

  获取当前日期时间

  通过datetime.now()获取当前本地日期时间,datetime.utcnow()获取当前 UTC 时间(国际标准时间):

  TypeScript取消自动换行复制

  from datetime import datetime, date, time

  # 获取当前本地日期时间(datetime对象)

  current_dt = datetime.now()

  print(current_dt) # 输出:2025-08-30 14:35:22.123456

  # 获取当前日期(date对象)

  current_date = date.today()

  print(current_date) # 输出:2025-08-30

  # 获取当前时间(time对象)

  current_time = datetime.now().time()

  print(current_time) # 输出:14:35:22.123456

  创建指定日期时间

  直接通过对象构造函数传入参数,需注意参数合法性(如月份 1-12、日期 1-31):

  TypeScript取消自动换行复制

  # 创建指定日期时间(2025年10月1日 8:00:00)

  specified_dt = datetime(2025, 10, 1, 8, 0, 0)

  print(specified_dt) # 输出:2025-10-01 08:00:00

  # 创建指定日期(2025年5月20日)

  specified_date = date(2025, 5, 20)

  print(specified_date) # 输出:2025-05-20

  (二)日期时间格式转换:在字符串与对象间切换

  日期时间对象需转换为字符串才能用于输出或存储,字符串也需解析为对象才能进行计算,核心依赖strftime()(对象转字符串)与strptime()(字符串转对象)。

  对象转字符串:strftime()

  通过格式化符号指定输出格式(如%Y表示 4 位年份、%m表示 2 位月份):

  TypeScript取消自动换行复制

  current_dt = datetime.now()

  # 转换为"年-月-日 时:分:秒"格式

  str_dt1 = current_dt.strftime("%Y-%m-%d %H:%M:%S")

  print(str_dt1) # 输出:2025-08-30 14:40:15

  # 转换为"月/日/年 上/下午时:分"格式

  str_dt2 = current_dt.strftime("%m/%d/%Y %p%I:%M")

  print(str_dt2) # 输出:08/30/2025 PM02:40

  常用格式化符号:%Y(4 位年)、%m(2 位月)、%d(2 位日)、%H(24 小时制时)、%I(12 小时制时)、%M(分)、%S(秒)、%p(AM/PM)。

  字符串转对象:strptime()

  需指定字符串格式,与strftime()的格式化符号对应,否则会报错:

  TypeScript取消自动换行复制

  # 字符串转datetime对象

  str_dt = "2025-12-25 10:30:00"

  dt_obj = datetime.strptime(str_dt, "%Y-%m-%d %H:%M:%S")

  print(dt_obj) # 输出:2025-12-25 10:30:00

  print(type(dt_obj)) # 输出:<class 'datetime.datetime'>

  (三)日期时间计算:差值与偏移

  借助timedelta对象实现日期时间的加减计算,支持天、小时、分钟等单位的偏移。

  计算日期时间差值

  两个datetime对象相减,结果为timedelta对象,包含天数、秒数等差值信息:

  TypeScript取消自动换行复制

  from datetime import timedelta

  start_dt = datetime(2025, 8, 1, 0, 0, 0)

  end_dt = datetime(2025, 8, 30, 12, 0, 0)

  # 计算时间差

  delta = end_dt - start_dt

  print(delta) # 输出:29 days, 12:00:00(29天12小时)

  print(delta.days) # 输出:29(天数)

  print(delta.total_seconds()) # 输出:2553600.0(总秒数)

  日期时间偏移(加减)

  datetime对象与timedelta对象相加 / 减,得到偏移后的日期时间:

  TypeScript取消自动换行复制

  current_dt = datetime.now()

  # 3天后的同一时间

  future_dt = current_dt + timedelta(days=3)

  print(future_dt) # 输出:2025-09-02 14:50:30.123456

  # 1小时30分钟前的时间

  past_dt = current_dt - timedelta(hours=1, minutes=30)

  print(past_dt) # 输出:2025-08-30 13:20:30.123456

  (四)日期时间属性与常用判断

  通过datetime对象的属性可直接获取年、月、日等信息,也可判断日期相关特性:

  TypeScript取消自动换行复制

  current_dt = datetime.now()

  # 获取日期时间属性

  print(current_dt.year) # 输出:2025(年份)

  print(current_dt.month) # 输出:8(月份)

  print(current_dt.day) # 输出:30(日期)

  print(current_dt.weekday()) # 输出:5(星期几,0=周一,6=周日)

  # 判断是否为闰年(date对象方法)

  current_date = date.today()

  print(current_date.is_leap_year) # 输出:False(2025年非闰年)

  datetime模块通过date、time、datetime、timedelta四类对象,覆盖了日期时间的创建、转换、计算等核心需求。常用操作可总结为:用now()/ 构造函数创建对象,用strftime()/strptime()实现格式转换,用timedelta完成差值与偏移计算。

  实际开发中,需注意格式符号的一致性(避免strptime()解析报错)、时区问题(若需处理跨时区时间,可结合pytz第三方库)。掌握datetime模块的常用操作,能高效解决日志格式化、任务调度、数据时间戳处理等场景需求,是 Python 开发的必备技能。

 


猜你喜欢