Python日期时间怎么处理_datetime模块详解

1次阅读

datetime模块的核心类包括:①date(仅年月日)、②time(仅时分秒微秒)、③datetime(日期+时间)、④timedelta(时间差)、⑤tzinfo(时区抽象基类,实际多用zoneinfo或pytz)。

Python日期时间怎么处理_datetime模块详解

python 中处理日期和时间最常用、最核心的模块就是 datetime。它不依赖外部库,标准库自带,功能完整且设计清晰,适合绝大多数日常需求——比如记录日志时间、计算两个时间点的间隔、格式化输出、解析用户输入的时间字符串等。

datetime 模块的核心类有哪些?

这个模块不是只有一个类,而是由几个分工明确的类组成,理解它们的关系是用好 datetime 的第一步:

  • date:只表示年-月-日,不带时分秒,也不含时区,适合记录生日、合同生效日这类纯日期信息
  • time:只表示时:分:秒.微秒,不带日期,也不含时区,适合表示一天中的某个时刻(如闹钟设定)
  • datetime:date + time 的组合,包含年月日时分秒微秒,是最常用的类,比如记录某次请求的精确时间戳
  • timedelta:表示两个时间点之间的差值(如“3天”、“2小时30分钟”),用于加减运算,不能单独表示某个时刻
  • tzinfo(抽象基类):用于支持时区,实际中多用 zoneinfo(Python 3.9+)或第三方库 pytz 配合使用

怎么创建和获取当前时间?

最常见操作就是拿到“现在”:

  • datetime.now() → 返回本地时区的当前 datetime 对象
  • datetime.utcnow() → 返回 UTC 时间(不推荐直接用,容易忽略时区问题)
  • date.today() → 只取今天日期,返回 date 对象
  • 手动构造:datetime(2024, 5, 20, 13, 14, 30) 表示 2024 年 5 月 20 日 13:14:30

注意:now()today() 默认不带时区信息(tzinfo=None),属于“naive”类型;如果需要带时区的“aware”对象,得显式传入时区,例如:datetime.now(ZoneInfo("Asia/Shanghai"))(需先 from zoneinfo import ZoneInfo)。

立即学习Python免费学习笔记(深入)”;

怎么格式化输出和解析字符串?

和字符串互转是高频需求,靠 strftimestrptime 两个方法:

  • dt.strftime("%Y-%m-%d %H:%M:%S") → 把 datetime 对象转成指定格式字符串,比如 "2024-05-20 13:14:30"
  • datetime.strptime("2024-05-20", "%Y-%m-%d") → 把字符串按格式解析成 datetime 对象(注意:没有时间部分时,时分秒默认为 0)

常用格式码记住这几个就够用:%Y(4位年)、%m(月)、%d(日)、%H(24小时制时)、%M(分)、%S(秒)、%f(微秒)。大小写敏感,别写错。

怎么计算时间差和做加减法?

datetime 对象之间可以相减,结果是 timedelta;datetime 也可以和 timedelta 相加减,得到新的 datetime:

  • later = dt + timedelta(days=7, hours=3) → 往后推 7 天 3 小时
  • diff = dt2 - dt1 → 得到一个 timedelta 对象,可用 diff.daysdiff.secondsdiff.total_seconds() 获取数值
  • 注意:timedelta 不能和 datetime 直接运算,类型要匹配

比如判断某订单是否超时:用当前时间减去下单时间,再和预设的 timedelta(hours=24) 比较大小即可。

掌握这四块内容,基本覆盖了 90% 的 Python 时间处理场景。不需要死记所有方法,先从 datetime.now()strftimestrptimetimedelta 加减练起,边用边熟悉。

text=ZqhQzanResources