Python time 模块从时间表示到时间转化的深度解析

 更新时间:2026年02月10日 09:59:33   作者:玄同765  
在Python开发中,时间处理是永恒的主题—— 无论是日志记录、任务调度、数据分析还是 LLM 开发中的对话历史时间戳,都离不开对时间的精确控制和转化,本文将系统性地解析Python的time模块,从基础的时间格式到复杂的时间转化,感兴趣的朋友跟随小编一起看看吧

开篇:时间处理的 “瑞士军刀”

在 Python 开发中,时间处理是永恒的主题—— 无论是日志记录、任务调度、数据分析还是 LLM 开发中的对话历史时间戳,都离不开对时间的精确控制和转化。Python 的time模块就是处理时间的核心工具,它提供了:

  • 时间的表示方式(时间戳、结构化时间、字符串时间)
  • 时间的转化功能(时间戳→结构化时间→字符串时间)
  • 时间的计算功能(时间差、睡眠等)
  • 时间的获取功能(当前时间、CPU 时间等)

本文将系统性地解析 Python 的 time 模块,从基础的时间格式到复杂的时间转化,从核心函数到实战应用,帮你全方位掌握 time 模块的使用。

一、time 模块的基础认知

1.1 什么是 time 模块?

time 模块是 Python 标准库中的时间处理模块,提供了与时间相关的各种功能,包括时间的获取、表示、转化和计算等。

1.2 时间的三种表示方式

在 Python 中,时间主要有以下三种表示方式:

时间类型含义示例
时间戳从 1970 年 1 月 1 日 00:00:00 UTC 开始经过的秒数1635705600.0
结构化时间包含年、月、日、时、分、秒等时间字段的元组time.struct_time(tm_year=2021, tm_mon=11, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=305, tm_isdst=-1)
字符串时间可读性强的字符串表示形式"2021-11-01 00:00:00"

1.3 time 模块的导入

import time

二、时间格式字符串详解

时间格式字符串是用于将结构化时间或时间戳转化为字符串时间的模板,由普通字符和格式说明符组成。格式说明符以%开头,用于指定时间字段的格式。

2.1 时间格式说明符表格

2.1.1 年份

格式说明符含义示例
%Y4 位年份2024
%y2 位年份24

2.1.2 月份

格式说明符含义示例
%m2 位月份(01-12)05
%b英文月份缩写(Jan-Dec)May
%B英文月份全称(January-December)May

2.1.3 日期

格式说明符含义示例
%d2 位日期(01-31)15
%j1 年中的第几天(001-366)135

2.1.4 星期

格式说明符含义示例
%a英文星期缩写(Mon-Sun)Wed
%A英文星期全称(Monday-Sunday)Wednesday
%w星期几(0-6,0 代表周日)3
%W1 年中的第几周(00-53)20
%U1 年中的第几周(00-53)20

2.1.5 时间

格式说明符含义示例
%H24 小时制小时数(00-23)14
%I12 小时制小时数(01-12)02
%pAM/PMPM
%M分钟数(00-59)30
%S秒数(00-59)45
%f微秒数(000000-999999)123456

2.1.6 时区与时间戳

格式说明符含义示例
%zUTC 偏移量+0800
%Z时区名称CST
%c本地时间的字符串表示Wed May 15 14:30:45 2024
%x本地日期的字符串表示05/15/24
%X本地时间的字符串表示14:30:45

2.1.7 其他

格式说明符含义示例
%%百分号%

三、time 模块核心函数全解析

3.1 获取时间相关的函数

3.1.1 time.time()

功能:获取当前时间的时间戳(从 1970 年 1 月 1 日 00:00:00 UTC 开始经过的秒数)语法time.time() -> float返回值:浮点数时间戳实战案例

import time
# 获取当前时间戳
current_timestamp = time.time()
print(f"当前时间戳:{current_timestamp}")
# 输出:当前时间戳:1715781045.123456

3.1.2 time.localtime()

功能:将时间戳转化为本地时间的结构化时间语法time.localtime([secs]) -> struct_time参数

  • secs:可选参数,时间戳,默认为当前时间返回值:结构化时间元组实战案例
import time
# 获取当前本地时间的结构化时间
local_time = time.localtime()
print(f"当前本地时间的结构化时间:{local_time}")
# 输出:当前本地时间的结构化时间:time.struct_time(tm_year=2024, tm_mon=5, tm_mday=15, tm_hour=14, tm_min=30, tm_sec=45, tm_wday=2, tm_yday=136, tm_isdst=0)

3.1.3 time.gmtime()

功能:将时间戳转化为 UTC 时间的结构化时间语法time.gmtime([secs]) -> struct_time参数

  • secs:可选参数,时间戳,默认为当前时间返回值:结构化时间元组实战案例
import time
# 获取当前UTC时间的结构化时间
utc_time = time.gmtime()
print(f"当前UTC时间的结构化时间:{utc_time}")
# 输出:当前UTC时间的结构化时间:time.struct_time(tm_year=2024, tm_mon=5, tm_mday=15, tm_hour=6, tm_min=30, tm_sec=45, tm_wday=2, tm_yday=136, tm_isdst=0)

3.1.4 time.strftime()

功能:将结构化时间转化为字符串时间语法time.strftime(format[, t]) -> str参数

  • format:时间格式字符串
  • t:可选参数,结构化时间,默认为当前本地时间返回值:字符串时间实战案例
import time
# 将当前本地时间转化为字符串时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S")
print(f"当前时间:{formatted_time}")
# 输出:当前时间:2024-05-15 14:30:45
# 将指定的结构化时间转化为字符串时间
struct_time = time.struct_time(tm_year=2024, tm_mon=5, tm_mday=15, tm_hour=14, tm_min=30, tm_sec=45, tm_wday=2, tm_yday=136, tm_isdst=0)
formatted_time = time.strftime("%B %d, %Y %I:%M:%S %p", struct_time)
print(f"格式化时间:{formatted_time}")
# 输出:格式化时间:May 15, 2024 02:30:45 PM

3.1.5 time.strptime()

功能:将字符串时间转化为结构化时间语法time.strptime(string, format) -> struct_time参数

  • string:字符串时间
  • format:时间格式字符串返回值:结构化时间元组实战案例
import time
# 将字符串时间转化为结构化时间
string_time = "2024-05-15 14:30:45"
struct_time = time.strptime(string_time, "%Y-%m-%d %H:%M:%S")
print(f"结构化时间:{struct_time}")
# 输出:结构化时间:time.struct_time(tm_year=2024, tm_mon=5, tm_mday=15, tm_hour=14, tm_min=30, tm_sec=45, tm_wday=2, tm_yday=136, tm_isdst=-1)

3.1.6 time.asctime()

功能:将结构化时间转化为可读性强的字符串时间语法time.asctime([t]) -> str参数

  • t:可选参数,结构化时间,默认为当前本地时间返回值:字符串时间实战案例
import time
# 将当前本地时间转化为可读性强的字符串时间
asctime = time.asctime()
print(f"当前时间:{asctime}")
# 输出:当前时间:Wed May 15 14:30:45 2024

3.1.7 time.ctime()

功能:将时间戳转化为可读性强的字符串时间语法time.ctime([secs]) -> str参数

  • secs:可选参数,时间戳,默认为当前时间返回值:字符串时间实战案例
import time
# 将当前时间戳转化为可读性强的字符串时间
ctime = time.ctime()
print(f"当前时间:{ctime}")
# 输出:当前时间:Wed May 15 14:30:45 2024

3.2 时间计算相关的函数

3.2.1 time.sleep()

功能:让程序休眠指定的秒数语法time.sleep(secs) -> None参数

  • secs:休眠的秒数,可以是浮点数返回值:无实战案例
import time
print("开始执行")
time.sleep(2)  # 休眠2秒
print("执行结束")
# 输出:开始执行
# 等待2秒后输出:执行结束

3.2.2 time.clock()

功能:获取 CPU 时间语法time.clock() -> float返回值:浮点数 CPU 时间说明:在 Python 3.8 + 中已被废弃,建议使用time.process_time()time.perf_counter()替代

3.2.3 time.process_time()

功能:获取当前进程的 CPU 时间语法time.process_time() -> float返回值:浮点数 CPU 时间实战案例

import time
# 记录开始时间
start_time = time.process_time()
# 执行一段耗时的代码
sum = 0
for i in range(1000000):
    sum += i
# 记录结束时间
end_time = time.process_time()
# 计算耗时
elapsed_time = end_time - start_time
print(f"耗时:{elapsed_time}秒")
# 输出:耗时:0.015625秒

3.2.4 time.perf_counter()

功能:获取高精度计时器的时间语法time.perf_counter() -> float返回值:浮点数时间实战案例

import time
# 记录开始时间
start_time = time.perf_counter()
# 执行一段耗时的代码
time.sleep(0.5)
# 记录结束时间
end_time = time.perf_counter()
# 计算耗时
elapsed_time = end_time - start_time
print(f"耗时:{elapsed_time}秒")
# 输出:耗时:0.500123456秒

3.2.5 time.time_ns()

功能:获取当前时间的纳秒时间戳语法time.time_ns() -> int返回值:整数纳秒时间戳实战案例

import time
# 获取当前时间的纳秒时间戳
time_ns = time.time_ns()
print(f"当前纳秒时间戳:{time_ns}")
# 输出:当前纳秒时间戳:1715781045123456789

3.3 其他函数

3.3.1 time.tzset()

功能:设置当前时区语法time.tzset() -> None返回值:无说明:仅在 Unix 系统上有效

3.3.2 time.gettimeofday()

功能:获取当前时间和时区信息语法time.gettimeofday() -> tuple返回值:包含秒和微秒的元组说明:仅在 Unix 系统上有效

四、time 模块实战应用

4.1 时间转化实战

4.1.1 时间戳转化为字符串时间

import time
# 获取当前时间戳
timestamp = time.time()
# 转化为格式化的字符串时间
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(timestamp))
print(f"时间戳 {timestamp} 转化为字符串时间:{formatted_time}")

4.1.2 字符串时间转化为时间戳

import time
# 字符串时间
string_time = "2024-05-15 14:30:45"
# 转化为结构化时间
struct_time = time.strptime(string_time, "%Y-%m-%d %H:%M:%S")
# 转化为时间戳
timestamp = time.mktime(struct_time)
print(f"字符串时间 {string_time} 转化为时间戳:{timestamp}")

4.1.3 结构化时间转化为字符串时间

import time
# 结构化时间
struct_time = time.struct_time(tm_year=2024, tm_mon=5, tm_mday=15, tm_hour=14, tm_min=30, tm_sec=45, tm_wday=2, tm_yday=136, tm_isdst=0)
# 转化为格式化的字符串时间
formatted_time = time.strftime("%B %d, %Y %I:%M:%S %p", struct_time)
print(f"结构化时间 {struct_time} 转化为字符串时间:{formatted_time}")

4.2 时间计算实战

4.2.1 计算程序执行时间

import time
# 记录开始时间
start_time = time.perf_counter()
# 执行一段耗时的代码
sum = 0
for i in range(10000000):
    sum += i
# 记录结束时间
end_time = time.perf_counter()
# 计算耗时
elapsed_time = end_time - start_time
print(f"程序执行时间:{elapsed_time}秒")

4.2.2 实现定时任务

import time
def task():
    print(f"任务执行时间:{time.strftime('%Y-%m-%d %H:%M:%S')}")
# 每2秒执行一次任务
while True:
    task()
    time.sleep(2)

4.3 LLM 开发实战

4.3.1 记录对话历史时间戳

import time
# LLM对话历史
chat_history = []
def add_message(role, content):
    message = {
        "role": role,
        "content": content,
        "timestamp": time.strftime("%Y-%m-%d %H:%M:%S")
    }
    chat_history.append(message)
# 添加对话
add_message("user", "什么是LLM?")
add_message("assistant", "LLM是大语言模型的缩写。")
# 打印对话历史
for message in chat_history:
    print(f"[{message['timestamp']}] {message['role']}: {message['content']}")
# 输出:
# [2024-05-15 14:30:45] user: 什么是LLM?
# [2024-05-15 14:30:45] assistant: LLM是大语言模型的缩写。

4.3.2 统计 LLM 响应时间

import time
import openai
from dotenv import load_dotenv
import os
# 加载API密钥
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def call_llm(prompt):
    # 记录开始时间
    start_time = time.perf_counter()
    # 调用LLM API
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )
    # 记录结束时间
    end_time = time.perf_counter()
    # 计算响应时间
    response_time = end_time - start_time
    # 提取回答
    answer = response["choices"][0]["message"]["content"]
    return answer, response_time
# 测试
prompt = "什么是LLM?"
answer, response_time = call_llm(prompt)
print(f"回答:{answer}")
print(f"响应时间:{response_time}秒")

五、常见问题与解决方案

5.1 时间格式转化错误

问题:在使用time.strptime()转化字符串时间时提示ValueError: time data '2024/05/15' does not match format '%Y-%m-%d'解决方案:确保时间格式字符串与字符串时间的格式一致。例如,将%Y-%m-%d改为%Y/%m/%d

5.2 时区问题

问题:在不同的时区下,时间戳转化为字符串时间的结果不同。解决方案:使用time.gmtime()获取 UTC 时间,或使用datetime模块处理时区。

5.3 时间戳精度问题

问题:在 Python 2.x 中,time.time()返回的是整数时间戳,而在 Python 3.x 中返回的是浮点数时间戳。解决方案:在 Python 2.x 中,可以使用time.time()结合time.sleep()实现高精度时间。

5.4 字符串时间转时间戳的时区问题

问题:在使用time.mktime()转化结构化时间为时间戳时,会自动添加本地时区。解决方案:使用datetime模块的datetime.timestamp()方法。

六、time 模块与 datetime 模块的对比

模块功能特点
time时间的获取、表示、转化和计算功能基础,适合处理简单的时间问题
datetime时间和日期的处理功能强大,支持时区、日期计算等

建议

  • 对于简单的时间处理,使用time模块
  • 对于复杂的时间处理(如时区、日期计算等),使用datetime模块

七、总结:time 模块的核心价值

time 模块是 Python 中处理时间的核心工具,它提供了时间的表示、转化、计算和获取等功能。通过本文的学习,你已经掌握了 time 模块的所有核心函数和时间格式字符串的用法,并结合实战案例进行了深入的应用。

在实际开发中,要注意以下几点:

  1. 选择合适的时间表示方式
  2. 确保时间格式字符串与字符串时间的格式一致
  3. 注意时区问题
  4. 对于复杂的时间处理,使用 datetime 模块

time 模块虽然功能基础,但却是 Python 开发中不可或缺的工具。掌握它的使用,可以帮助你在日志记录、任务调度、数据分析和 LLM 开发等领域中更加高效地处理时间问题。

到此这篇关于Python time 模块深度解析:从时间表示到时间转化的全指南的文章就介绍到这了,更多相关Python time 模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • jupyter 添加不同内核的操作

    jupyter 添加不同内核的操作

    这篇文章主要介绍了jupyter 添加不同内核的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • python help函数实例用法

    python help函数实例用法

    在本篇文章里小编给大家整理了关于python help函数实例用法及相关实例,需要的朋友们可以学习下。
    2020-12-12
  • python实现飞机大战微信小游戏

    python实现飞机大战微信小游戏

    这篇文章主要为大家详细介绍了python实现飞机大战微信小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Python GUI实现PDF转Word功能

    Python GUI实现PDF转Word功能

    这篇文章主要介绍了如何使用 wxPython 创建一个简单的图形用户界面(GUI)应用程序,结合 pdf2docx 库,实现将 PDF 转换为 Word 文档的功能,需要的可以参考下
    2024-12-12
  • Python 数据处理更容易的12个辅助函数总结

    Python 数据处理更容易的12个辅助函数总结

    Python的产生似乎就是专门用来处理数据的,顺理成章的成为大数据的主流语言,本文介绍十二个函数辅助你更容易更便捷的用Python进行数据处理
    2021-11-11
  • python线程如何强制暂停、恢复、停止(非标志位)

    python线程如何强制暂停、恢复、停止(非标志位)

    这篇文章主要介绍了python线程如何强制暂停、恢复、停止(非标志位),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python3使用matplotlib绘制条形图

    python3使用matplotlib绘制条形图

    这篇文章主要为大家详细介绍了python3使用matplotlib绘制条形图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • python类的私有属性和公共属性说明

    python类的私有属性和公共属性说明

    这篇文章主要介绍了python类的私有属性和公共属性说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • python将word的doc另存为docx的实现方案

    python将word的doc另存为docx的实现方案

    在 Python 中,你可以使用 python-docx 库来操作 Word 文档,不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式,python-docx 只能处理 .docx 格式,需要的朋友可以参考下
    2025-08-08
  • python绘制饼图的方法详解

    python绘制饼图的方法详解

    这篇文章主要为大家详细介绍了python绘制饼图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03

最新评论