Python3 time 与 datetime 模块及应用

🎉摘要:本文详解 Python 日期时间处理,涵盖 time 和 datetime 模块核心用法。包括时间戳获取、格式化转换、程序延时、日期计算及模块互转技巧。提供丰富代码示例与日志工具实战,助开发者高效掌握 Python 时间处理。

日期和时间处理在日常开发中非常常见和重要,在 Python 中,可以通过 time 和 datetime 模块处理时间、日期、时间戳、格式化等。其中:

  • time 模块:偏底层,处理时间戳、程序计时、系统时间,适合精确计时、延时操作。

  • datetime 模块:偏上层,封装更友好,处理日期、时间、时间差、日期计算,日常用得最多。

time 模块

time 模块是 Python 内置的标准时间处理模块,无需额外安装即可直接调用。主要用于时间获取、格式转换、程序休眠与性能计时。

该模块以 Unix 时间戳为核心,支持获取当前时间戳、本地与 UTC 结构化时间,可完成时间戳与可读时间格式的相互转换,还能通过 sleep 函数实现程序暂停,借助 perf_counter 等函数完成高精度计时,常被用于日志记录、定时任务、接口重试等待、代码耗时统计等场景。

常用方法:

  • time.time()    获取当前时间戳(1970-01-01 到现在的秒数)

  • time.sleep(秒)   程序暂停 / 延时

  • time.localtime()    时间戳 → 本地时间结构体

  • time.gmtime()    时间戳 → UTC 时间结构体

  • time.strftime()    时间结构体 → 自定义格式化字符串

  • time.strptime()    时间字符串 → 时间结构体

  • time.perf_counter()   高精度程序计时

常用格式化符号:

  • %Y:年(4 位)

  • %m:月(2 位)

  • %d:日

  • %H:时(24 小时制)

  • %M:分

  • %S:秒

简单示例

(1)获取当前时间戳

import time

ts = time.time()
print("当前时间戳:", ts)

运行结果:

当前时间戳: 1776675682.9656248

(2)程序延时

import time

# 程序延时
print("开始等待 2 秒...")
time.sleep(2)
print("等待结束")

运行结果:

开始等待 2 秒...
等待结束

(3) 将时间戳转换为本地时间对象

import time

# 获取当前时间戳(最常用)
ts = time.time()

# 转换为本地时间对象
local_time = time.localtime(ts)
print("本地时间结构体:", local_time)
print("年:", local_time.tm_year)
print("月:", local_time.tm_mon)

运行结果:

本地时间结构体: time.struct_time(tm_year=2026, tm_mon=4, tm_mday=20, tm_hour=17, tm_min=3, tm_sec=27, tm_wday=0, tm_yday=110, tm_isdst=0)
年: 2026
月: 4

(4)时间格式化输出

import time

ts = time.time()
local_time = time.localtime(ts)

format_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("格式化时间:", format_time)

运行结果:

格式化时间: 2026-04-20 17:04:35

(5)字符串转时间

import time

time_str = "2025-12-25 18:30:00"
time_struct = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print("字符串转时间结构体:", time_struct)

运行结果:

字符串转时间结构体: time.struct_time(tm_year=2025, tm_mon=12, tm_mday=25, tm_hour=18, tm_min=30, tm_sec=0, tm_wday=3, tm_yday=359, tm_isdst=-1)

(6)

import time

start = time.perf_counter()
time.sleep(0.5)  # 模拟耗时
end = time.perf_counter()
print(f"代码耗时:{end - start:.4f} 秒")

运行结果:

代码耗时:0.5005 秒

更多关于 time 模块的信息,请参考 https://docs.python.org/3/library/time.html 官方参考文档。

datetime 模块

datetime 模块是 Python 中用于处理日期与时间的内置模块,它能够高效地完成日期、时间的创建、计算、格式化以及转换等常见操作。

该模块整合了多个实用的类,其中最常用的包括 date 类、time 类、datetime 类以及 timedelta 类,分别用于单独处理日期信息、时间信息、处理日期和时间,以及计算两个时间点之间的时间差值。

借助 datetime 模块,开发者可以便捷地获取当前系统日期时间、对日期进行加减运算、将字符串与日期对象相互转换,还能规范日期时间的显示格式。

注意,datetime 是面向对象的模块,包含 4 个常用类:

  • datetime:日期 + 时间

  • date:仅日期

  • time:仅时间

  • timedelta:时间差(日期加减)

常用方法

datetime 模块的常用方法如下:

  • datetime.now()    当前日期时间

  • datetime.today()    当前日期时间

  • datetime.utcnow()    UTC 时间

  • dt.timestamp()    转时间戳

  • datetime.fromtimestamp(ts)    时间戳 → datetime

  • dt.strftime()    格式化字符串

  • datetime.strptime()    字符串转 datetime

  • timedelta(days=, hours=)    时间加减

简单示例

(1)获取当前日期时间

from datetime import datetime, date, time, timedelta

now = datetime.now()
print("当前时间:", now)
print("年:", now.year)
print("月:", now.month)
print("时:", now.hour)

运行结果:

当前时间: 2026-04-20 17:14:20.378719
年: 2026
月: 4
时: 17

(2)格式化输出

from datetime import datetime, date, time, timedelta

now = datetime.now()
str_time = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化:", str_time)

运行结果:

格式化: 2026-04-20 17:15:26

(3)字符串转 datetime

from datetime import datetime, date, time, timedelta

dt = datetime.strptime("2025-10-01 12:00:00", "%Y-%m-%d %H:%M:%S")
print("字符串转时间:", dt)

运行结果:

字符串转时间: 2025-10-01 12:00:00

(4)datetime 和时间戳互转

from datetime import datetime, date, time, timedelta

# 获取当前日期时间
now = datetime.now()

ts = now.timestamp()
print("转时间戳:", ts)

dt2 = datetime.fromtimestamp(ts)
print("时间戳转回:", dt2)

运行结果:

转时间戳: 1776676695.433652
时间戳转回: 2026-04-20 17:18:15.433652

(5)时间加减

from datetime import datetime, date, time, timedelta

# 获取当前日期时间
now = datetime.now()

# 加 3 天
after_3d = now + timedelta(days=3)
print("3天后:", after_3d)

# 减 2 小时 30 分钟
before = now - timedelta(hours=2, minutes=30)
print("2小时30分钟前:", before)

运行结果:

3天后: 2026-04-23 17:19:43.182177
2小时30分钟前: 2026-04-20 14:49:43.182177

(6) 单独使用 date / time

from datetime import date, time

today = date.today()
print("今天日期:", today)

t = time(14, 30, 59)
print("时间:", t)

运行结果:

今天日期: 2026-04-20
时间: 14:30:59

更多关于 datetime 模块的信息,请参考 https://docs.python.org/3/library/datetime.html 官方参考文档。

time 与 datetime 互转

下面通过一个示例演示 time 和 datetime 互转,例如:

import time
from datetime import datetime

# datetime → 时间戳
now = datetime.now()
ts = now.timestamp()
print(ts)

# 时间戳 → datetime
dt = datetime.fromtimestamp(ts)
print(dt)

# datetime → time 结构体
struct = now.timetuple()
print(struct)

# time 结构体 → datetime
dt2 = datetime.fromtimestamp(time.mktime(struct))
print(dt2)

运行结果:

1776677027.515607
2026-04-20 17:23:47.515607
time.struct_time(tm_year=2026, tm_mon=4, tm_mday=20, tm_hour=17, tm_min=23, tm_sec=47, tm_wday=0, tm_yday=110, tm_isdst=-1)
2026-04-20 17:23:47

实战:日志时间工具

该示例将获取当前时间,生成带时间戳的日志文件名,并且计算距离指定节日还有多少天,最后格式化输出倒计时。

完整代码:

from datetime import datetime, timedelta

def time_tool():
    # 1. 当前时间
    now = datetime.now()
    print("📅 当前时间:", now.strftime("%Y-%m-%d %H:%M:%S"))

    # 2. 生成日志文件名
    log_name = now.strftime("log_%Y%m%d_%H%M%S.txt")
    print("📄 日志文件名:", log_name)

    # 3. 目标时间:2025-12-25
    target = datetime(2025, 12, 25, 0, 0, 0)

    # 4. 计算时间差
    delta = target - now
    days = delta.days
    seconds = delta.seconds
    hours = seconds // 3600
    minutes = (seconds % 3600) // 60

    print(f"🎄 距离圣诞节还有:{days}天 {hours}小时 {minutes}分钟")

    # 5. 7天后的时间
    after_7d = now + timedelta(days=7)
    print("🗓️ 7天后日期:", after_7d.strftime("%Y-%m-%d"))

# 运行工具
if __name__ == "__main__":
    time_tool()

运行效果

📅 当前时间: 2026-04-20 17:28:39
📄 日志文件名: log_20260420_172839.txt
🎄 距离圣诞节还有:-117天 6小时 31分钟
🗓️ 7天后日期: 2026-04-27


说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号