Python datetime模块详细介绍(核心模块)

 更新时间:2025年06月24日 14:28:45   作者:漫谈网络  
Python的datetime模块是处理日期时间的核心库,提供date、time、datetime等类及timedelta时间间隔工具,支持时区转换、格式化解析、时间计算操作,实践建议使用UTC存储时间并结合timezone库处理时区,本文给大家介绍Python datetime模块的相关知识,感兴趣的朋友一起看看吧

Python 的 datetime 模块是处理日期和时间的核心库,提供了丰富的类和方法来操作日期、时间、时间间隔和时区。以下是对该模块的详细介绍:

主要类

  1. datetime.date
    处理日期(年、月、日)。

    • 属性: year, month, day
    • 常用方法:
      • date.today(): 返回当前本地日期。
      • date.fromisoformat("YYYY-MM-DD"): 从字符串解析日期。
      • date.replace(year, month, day): 替换日期部分。
      • date.weekday(): 返回星期几(0=周一, 6=周日)。
      • date.strftime(format): 格式化日期为字符串。
  2. datetime.time
    处理时间(时、分、秒、微秒)。

    • 属性: hour, minute, second, microsecond, tzinfo(时区)
    • 常用方法:
      • time.replace(hour, minute, second, microsecond): 替换时间部分。
      • time.strftime(format): 格式化时间为字符串。
  3. datetime.datetime
    处理日期和时间的组合(最常用)。

    • 属性: year, month, day, hour, minute, second, microsecond, tzinfo
    • 常用方法:
      • datetime.now(tz=None): 返回当前本地日期时间。
      • datetime.utcnow(): 返回当前 UTC 时间。
      • datetime.combine(date, time): 合并日期和时间对象。
      • datetime.strptime(string, format): 解析字符串为日期时间。
      • datetime.timestamp(): 转换为 Unix 时间戳(秒)。
      • datetime.date(): 提取日期部分。
      • datetime.time(): 提取时间部分。
      • datetime.strftime(format): 格式化输出。
  4. datetime.timedelta
    表示时间间隔(如天、秒、微秒)。

    • 用途: 计算日期/时间的加减。
    • 示例:
future = datetime.now() + timedelta(days=7)  # 7天后
  1. datetime.tzinfo(抽象类)
    处理时区信息,需自定义实现。
    替代方案: 使用标准库 datetime.timezone(Python 3.2+)或第三方库 pytz

  2. datetime.timezone
    实现 tzinfo 的简单时区类。

  • 示例:
tz = timezone(timedelta(hours=8))  # UTC+8 时区
dt = datetime(2023, 5, 15, tzinfo=tz)

关键操作示例

1. 获取当前时间

from datetime import datetime
now = datetime.now()  # 2023-05-15 14:30:45.123456

2. 时间格式化与解析

# 日期时间 → 字符串
s = now.strftime("%Y-%m-%d %H:%M:%S")  # "2023-05-15 14:30:45"
# 字符串 → 日期时间
dt = datetime.strptime("2023-05-15", "%Y-%m-%d")  # 时间部分默认为 00:00:00

3. 时间计算

from datetime import timedelta
# 加减时间
tomorrow = now + timedelta(days=1)
last_hour = now - timedelta(hours=1)
# 计算时间差
diff = tomorrow - now
print(diff.total_seconds())  # 86400.0 秒

4. 时区处理

from datetime import timezone, timedelta
# 创建 UTC+8 时区
tz_beijing = timezone(timedelta(hours=8))
dt_local = datetime(2023, 5, 15, 14, 30, tzinfo=tz_beijing)
# 转换为 UTC 时间
dt_utc = dt_local.astimezone(timezone.utc)  # 2023-05-15 06:30:00+00:00

5. 获取日期/时间部分

date_part = now.date()  # 返回 date 对象
time_part = now.time()  # 返回 time 对象
year = now.year        # 2023

格式化符号表

符号含义示例
%Y四位年份2023
%m两位月份(01-12)05
%d两位日期(01-31)15
%H24小时制小时(00-23)14
%M分钟(00-59)30
%S秒(00-59)45
%f微秒(000000-999999)123456
%A星期全名Monday
%a星期缩写Mon
%B月份全名May
%b月份缩写May

最佳实践

  1. 处理时区
    优先使用 timezone 或第三方库 pytz(支持 IANA 时区数据库)。
  2. 时间存储
    建议用 UTC 时间存储,显示时再转换为本地时间。
  3. 性能敏感场景
    考虑使用 time.monotonic()time.perf_counter() 替代时间差计算。

完整示例

from datetime import datetime, timedelta, timezone
# 1. 获取当前时间(带时区)
now = datetime.now(timezone.utc)
# 2. 转换为北京时间 (UTC+8)
tz_beijing = timezone(timedelta(hours=8))
beijing_time = now.astimezone(tz_beijing)
# 3. 格式化输出
formatted = beijing_time.strftime("%Y-%m-%d %H:%M:%S %Z")
print(f"Beijing Time: {formatted}")  # e.g., "2023-05-15 22:30:45 UTC+08:00"
# 4. 计算7天后的日期
future = beijing_time + timedelta(days=7)
# 5. 解析字符串时间
dt_parsed = datetime.strptime("2023-12-31", "%Y-%m-%d")

通过掌握 datetime 模块,你可以高效处理绝大多数日期时间相关任务!

到此这篇关于Python datetime模块详解的文章就介绍到这了,更多相关Python datetime模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现去除列表中重复元素的方法小结【4种方法】

    Python实现去除列表中重复元素的方法小结【4种方法】

    这篇文章主要介绍了Python实现去除列表中重复元素的方法,结合实例形式总结分析了Python列表去重的4种实现方法,涉及Python针对列表的遍历、判断、排序等相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • Python基础之标准库和常用的第三方库案例教程

    Python基础之标准库和常用的第三方库案例教程

    这篇文章主要介绍了Python基础之标准库和常用的第三方库案例教程,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • python实现文件助手中查看微信撤回消息

    python实现文件助手中查看微信撤回消息

    这篇文章主要为大家详细介绍了python实现文件助手中查看微信撤回消息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • python如何统计代码运行的时长

    python如何统计代码运行的时长

    这篇文章主要介绍了python如何统计代码运行的时长,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • keras的siamese(孪生网络)实现案例

    keras的siamese(孪生网络)实现案例

    这篇文章主要介绍了keras的siamese(孪生网络)实现案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python3实现在二叉树中找出和为某一值的所有路径(推荐)

    python3实现在二叉树中找出和为某一值的所有路径(推荐)

    这篇文章主要介绍了python3实现在二叉树中找出和为某一值的所有路径,本文通过一个实例demo给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • python使用bs4爬取boss直聘静态页面

    python使用bs4爬取boss直聘静态页面

    这篇文章主要介绍了python如何使用bs4爬取boss直聘静态页面,帮助大家更好的理解和学习爬虫,感兴趣的朋友可以了解下
    2020-10-10
  • Union在Python类型注解中的应用与最佳实践

    Union在Python类型注解中的应用与最佳实践

    Union” 在中文中通常翻译为“联合”,在数学和逻辑学中,它指的是两个或多个集合的并集,在 Python 的类型注解中,Union 类型表示一个变量可以是多种类型中的任意一种,这与数学中的并集概念相似,本文介绍了Union在Python类型注解中的应用与最佳实践
    2024-09-09
  • 详解Python3中字符串中的数字提取方法

    详解Python3中字符串中的数字提取方法

    这篇文章主要介绍了详解Python3中字符串中的数字提取方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Python进阶之使用selenium爬取淘宝商品信息功能示例

    Python进阶之使用selenium爬取淘宝商品信息功能示例

    这篇文章主要介绍了Python进阶之使用selenium爬取淘宝商品信息功能,结合实例形式详细分析了Python使用selenium与requests模块爬取淘宝商品信息的相关操作技巧,需要的朋友可以参考下
    2019-09-09

最新评论