最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?time?模塊從時間表示到時間轉(zhuǎn)化的深度解析

 更新時間:2026年02月10日 09:59:33   作者:玄同765  
在Python開發(fā)中,時間處理是永恒的主題——?無論是日志記錄、任務(wù)調(diào)度、數(shù)據(jù)分析還是?LLM?開發(fā)中的對話歷史時間戳,都離不開對時間的精確控制和轉(zhuǎn)化,本文將系統(tǒng)性地解析Python的time模塊,從基礎(chǔ)的時間格式到復(fù)雜的時間轉(zhuǎn)化,感興趣的朋友跟隨小編一起看看吧

開篇:時間處理的 “瑞士軍刀”

在 Python 開發(fā)中,時間處理是永恒的主題—— 無論是日志記錄、任務(wù)調(diào)度、數(shù)據(jù)分析還是 LLM 開發(fā)中的對話歷史時間戳,都離不開對時間的精確控制和轉(zhuǎn)化。Python 的time模塊就是處理時間的核心工具,它提供了:

  • 時間的表示方式(時間戳、結(jié)構(gòu)化時間、字符串時間)
  • 時間的轉(zhuǎn)化功能(時間戳→結(jié)構(gòu)化時間→字符串時間)
  • 時間的計算功能(時間差、睡眠等)
  • 時間的獲取功能(當前時間、CPU 時間等)

本文將系統(tǒng)性地解析 Python 的 time 模塊,從基礎(chǔ)的時間格式到復(fù)雜的時間轉(zhuǎn)化,從核心函數(shù)到實戰(zhàn)應(yīng)用,幫你全方位掌握 time 模塊的使用。

一、time 模塊的基礎(chǔ)認知

1.1 什么是 time 模塊?

time 模塊是 Python 標準庫中的時間處理模塊,提供了與時間相關(guān)的各種功能,包括時間的獲取、表示、轉(zhuǎn)化和計算等。

1.2 時間的三種表示方式

在 Python 中,時間主要有以下三種表示方式:

時間類型含義示例
時間戳從 1970 年 1 月 1 日 00:00:00 UTC 開始經(jīng)過的秒數(shù)1635705600.0
結(jié)構(gòu)化時間包含年、月、日、時、分、秒等時間字段的元組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 模塊的導(dǎo)入

import time

二、時間格式字符串詳解

時間格式字符串是用于將結(jié)構(gòu)化時間或時間戳轉(zhuǎn)化為字符串時間的模板,由普通字符和格式說明符組成。格式說明符以%開頭,用于指定時間字段的格式。

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 小時制小時數(shù)(00-23)14
%I12 小時制小時數(shù)(01-12)02
%pAM/PMPM
%M分鐘數(shù)(00-59)30
%S秒數(shù)(00-59)45
%f微秒數(shù)(000000-999999)123456

2.1.6 時區(qū)與時間戳

格式說明符含義示例
%zUTC 偏移量+0800
%Z時區(qū)名稱CST
%c本地時間的字符串表示Wed May 15 14:30:45 2024
%x本地日期的字符串表示05/15/24
%X本地時間的字符串表示14:30:45

2.1.7 其他

格式說明符含義示例
%%百分號%

三、time 模塊核心函數(shù)全解析

3.1 獲取時間相關(guān)的函數(shù)

3.1.1 time.time()

功能:獲取當前時間的時間戳(從 1970 年 1 月 1 日 00:00:00 UTC 開始經(jīng)過的秒數(shù))語法time.time() -> float返回值:浮點數(shù)時間戳實戰(zhàn)案例

import time
# 獲取當前時間戳
current_timestamp = time.time()
print(f"當前時間戳:{current_timestamp}")
# 輸出:當前時間戳:1715781045.123456

3.1.2 time.localtime()

功能:將時間戳轉(zhuǎn)化為本地時間的結(jié)構(gòu)化時間語法time.localtime([secs]) -> struct_time參數(shù)

  • secs:可選參數(shù),時間戳,默認為當前時間返回值:結(jié)構(gòu)化時間元組實戰(zhàn)案例
import time
# 獲取當前本地時間的結(jié)構(gòu)化時間
local_time = time.localtime()
print(f"當前本地時間的結(jié)構(gòu)化時間:{local_time}")
# 輸出:當前本地時間的結(jié)構(gòu)化時間: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()

功能:將時間戳轉(zhuǎn)化為 UTC 時間的結(jié)構(gòu)化時間語法time.gmtime([secs]) -> struct_time參數(shù)

  • secs:可選參數(shù),時間戳,默認為當前時間返回值:結(jié)構(gòu)化時間元組實戰(zhàn)案例
import time
# 獲取當前UTC時間的結(jié)構(gòu)化時間
utc_time = time.gmtime()
print(f"當前UTC時間的結(jié)構(gòu)化時間:{utc_time}")
# 輸出:當前UTC時間的結(jié)構(gòu)化時間: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()

功能:將結(jié)構(gòu)化時間轉(zhuǎn)化為字符串時間語法time.strftime(format[, t]) -> str參數(shù)

  • format:時間格式字符串
  • t:可選參數(shù),結(jié)構(gòu)化時間,默認為當前本地時間返回值:字符串時間實戰(zhàn)案例
import time
# 將當前本地時間轉(zhuǎn)化為字符串時間
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S")
print(f"當前時間:{formatted_time}")
# 輸出:當前時間:2024-05-15 14:30:45
# 將指定的結(jié)構(gòu)化時間轉(zhuǎn)化為字符串時間
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()

功能:將字符串時間轉(zhuǎn)化為結(jié)構(gòu)化時間語法time.strptime(string, format) -> struct_time參數(shù)

  • string:字符串時間
  • format:時間格式字符串返回值:結(jié)構(gòu)化時間元組實戰(zhàn)案例
import time
# 將字符串時間轉(zhuǎn)化為結(jié)構(gòu)化時間
string_time = "2024-05-15 14:30:45"
struct_time = time.strptime(string_time, "%Y-%m-%d %H:%M:%S")
print(f"結(jié)構(gòu)化時間:{struct_time}")
# 輸出:結(jié)構(gòu)化時間: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()

功能:將結(jié)構(gòu)化時間轉(zhuǎn)化為可讀性強的字符串時間語法time.asctime([t]) -> str參數(shù)

  • t:可選參數(shù),結(jié)構(gòu)化時間,默認為當前本地時間返回值:字符串時間實戰(zhàn)案例
import time
# 將當前本地時間轉(zhuǎn)化為可讀性強的字符串時間
asctime = time.asctime()
print(f"當前時間:{asctime}")
# 輸出:當前時間:Wed May 15 14:30:45 2024

3.1.7 time.ctime()

功能:將時間戳轉(zhuǎn)化為可讀性強的字符串時間語法time.ctime([secs]) -> str參數(shù)

  • secs:可選參數(shù),時間戳,默認為當前時間返回值:字符串時間實戰(zhàn)案例
import time
# 將當前時間戳轉(zhuǎn)化為可讀性強的字符串時間
ctime = time.ctime()
print(f"當前時間:{ctime}")
# 輸出:當前時間:Wed May 15 14:30:45 2024

3.2 時間計算相關(guān)的函數(shù)

3.2.1 time.sleep()

功能:讓程序休眠指定的秒數(shù)語法time.sleep(secs) -> None參數(shù)

  • secs:休眠的秒數(shù),可以是浮點數(shù)返回值:無實戰(zhàn)案例
import time
print("開始執(zhí)行")
time.sleep(2)  # 休眠2秒
print("執(zhí)行結(jié)束")
# 輸出:開始執(zhí)行
# 等待2秒后輸出:執(zhí)行結(jié)束

3.2.2 time.clock()

功能:獲取 CPU 時間語法time.clock() -> float返回值:浮點數(shù) CPU 時間說明:在 Python 3.8 + 中已被廢棄,建議使用time.process_time()time.perf_counter()替代

3.2.3 time.process_time()

功能:獲取當前進程的 CPU 時間語法time.process_time() -> float返回值:浮點數(shù) CPU 時間實戰(zhàn)案例

import time
# 記錄開始時間
start_time = time.process_time()
# 執(zhí)行一段耗時的代碼
sum = 0
for i in range(1000000):
    sum += i
# 記錄結(jié)束時間
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返回值:浮點數(shù)時間實戰(zhàn)案例

import time
# 記錄開始時間
start_time = time.perf_counter()
# 執(zhí)行一段耗時的代碼
time.sleep(0.5)
# 記錄結(jié)束時間
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返回值:整數(shù)納秒時間戳實戰(zhàn)案例

import time
# 獲取當前時間的納秒時間戳
time_ns = time.time_ns()
print(f"當前納秒時間戳:{time_ns}")
# 輸出:當前納秒時間戳:1715781045123456789

3.3 其他函數(shù)

3.3.1 time.tzset()

功能:設(shè)置當前時區(qū)語法time.tzset() -> None返回值:無說明:僅在 Unix 系統(tǒng)上有效

3.3.2 time.gettimeofday()

功能:獲取當前時間和時區(qū)信息語法time.gettimeofday() -> tuple返回值:包含秒和微秒的元組說明:僅在 Unix 系統(tǒng)上有效

四、time 模塊實戰(zhàn)應(yīng)用

4.1 時間轉(zhuǎn)化實戰(zhàn)

4.1.1 時間戳轉(zhuǎn)化為字符串時間

import time
# 獲取當前時間戳
timestamp = time.time()
# 轉(zhuǎn)化為格式化的字符串時間
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(timestamp))
print(f"時間戳 {timestamp} 轉(zhuǎn)化為字符串時間:{formatted_time}")

4.1.2 字符串時間轉(zhuǎn)化為時間戳

import time
# 字符串時間
string_time = "2024-05-15 14:30:45"
# 轉(zhuǎn)化為結(jié)構(gòu)化時間
struct_time = time.strptime(string_time, "%Y-%m-%d %H:%M:%S")
# 轉(zhuǎn)化為時間戳
timestamp = time.mktime(struct_time)
print(f"字符串時間 {string_time} 轉(zhuǎn)化為時間戳:{timestamp}")

4.1.3 結(jié)構(gòu)化時間轉(zhuǎn)化為字符串時間

import time
# 結(jié)構(gòu)化時間
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)
# 轉(zhuǎn)化為格式化的字符串時間
formatted_time = time.strftime("%B %d, %Y %I:%M:%S %p", struct_time)
print(f"結(jié)構(gòu)化時間 {struct_time} 轉(zhuǎn)化為字符串時間:{formatted_time}")

4.2 時間計算實戰(zhàn)

4.2.1 計算程序執(zhí)行時間

import time
# 記錄開始時間
start_time = time.perf_counter()
# 執(zhí)行一段耗時的代碼
sum = 0
for i in range(10000000):
    sum += i
# 記錄結(jié)束時間
end_time = time.perf_counter()
# 計算耗時
elapsed_time = end_time - start_time
print(f"程序執(zhí)行時間:{elapsed_time}秒")

4.2.2 實現(xiàn)定時任務(wù)

import time
def task():
    print(f"任務(wù)執(zhí)行時間:{time.strftime('%Y-%m-%d %H:%M:%S')}")
# 每2秒執(zhí)行一次任務(wù)
while True:
    task()
    time.sleep(2)

4.3 LLM 開發(fā)實戰(zhàn)

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 統(tǒng)計 LLM 響應(yīng)時間

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()
    # 調(diào)用LLM API
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}]
    )
    # 記錄結(jié)束時間
    end_time = time.perf_counter()
    # 計算響應(yīng)時間
    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"響應(yīng)時間:{response_time}秒")

五、常見問題與解決方案

5.1 時間格式轉(zhuǎn)化錯誤

問題:在使用time.strptime()轉(zhuǎn)化字符串時間時提示ValueError: time data '2024/05/15' does not match format '%Y-%m-%d'解決方案:確保時間格式字符串與字符串時間的格式一致。例如,將%Y-%m-%d改為%Y/%m/%d。

5.2 時區(qū)問題

問題:在不同的時區(qū)下,時間戳轉(zhuǎn)化為字符串時間的結(jié)果不同。解決方案:使用time.gmtime()獲取 UTC 時間,或使用datetime模塊處理時區(qū)。

5.3 時間戳精度問題

問題:在 Python 2.x 中,time.time()返回的是整數(shù)時間戳,而在 Python 3.x 中返回的是浮點數(shù)時間戳。解決方案:在 Python 2.x 中,可以使用time.time()結(jié)合time.sleep()實現(xiàn)高精度時間。

5.4 字符串時間轉(zhuǎn)時間戳的時區(qū)問題

問題:在使用time.mktime()轉(zhuǎn)化結(jié)構(gòu)化時間為時間戳?xí)r,會自動添加本地時區(qū)。解決方案:使用datetime模塊的datetime.timestamp()方法。

六、time 模塊與 datetime 模塊的對比

模塊功能特點
time時間的獲取、表示、轉(zhuǎn)化和計算功能基礎(chǔ),適合處理簡單的時間問題
datetime時間和日期的處理功能強大,支持時區(qū)、日期計算等

建議

  • 對于簡單的時間處理,使用time模塊
  • 對于復(fù)雜的時間處理(如時區(qū)、日期計算等),使用datetime模塊

七、總結(jié):time 模塊的核心價值

time 模塊是 Python 中處理時間的核心工具,它提供了時間的表示、轉(zhuǎn)化、計算和獲取等功能。通過本文的學(xué)習(xí),你已經(jīng)掌握了 time 模塊的所有核心函數(shù)和時間格式字符串的用法,并結(jié)合實戰(zhàn)案例進行了深入的應(yīng)用。

在實際開發(fā)中,要注意以下幾點:

  1. 選擇合適的時間表示方式
  2. 確保時間格式字符串與字符串時間的格式一致
  3. 注意時區(qū)問題
  4. 對于復(fù)雜的時間處理,使用 datetime 模塊

time 模塊雖然功能基礎(chǔ),但卻是 Python 開發(fā)中不可或缺的工具。掌握它的使用,可以幫助你在日志記錄、任務(wù)調(diào)度、數(shù)據(jù)分析和 LLM 開發(fā)等領(lǐng)域中更加高效地處理時間問題。

到此這篇關(guān)于Python time 模塊深度解析:從時間表示到時間轉(zhuǎn)化的全指南的文章就介紹到這了,更多相關(guān)Python time 模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中內(nèi)置的數(shù)據(jù)結(jié)構(gòu)類型詳解(內(nèi)置數(shù)據(jù)容器)

    Python中內(nèi)置的數(shù)據(jù)結(jié)構(gòu)類型詳解(內(nèi)置數(shù)據(jù)容器)

    在?Python?中,字典(dict)是一種非常常用的數(shù)據(jù)結(jié)構(gòu),用于存儲鍵值對,這篇文章給大家介紹Python中內(nèi)置的數(shù)據(jù)結(jié)構(gòu)類型詳解(內(nèi)置數(shù)據(jù)容器),感興趣的朋友一起看看吧
    2025-04-04
  • Tornado協(xié)程在python2.7如何返回值(實現(xiàn)方法)

    Tornado協(xié)程在python2.7如何返回值(實現(xiàn)方法)

    下面小編就為大家?guī)硪黄猅ornado協(xié)程在python2.7如何返回值(實現(xiàn)方法)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Python中property函數(shù)用法實例分析

    Python中property函數(shù)用法實例分析

    這篇文章主要介紹了Python中property函數(shù)用法,結(jié)合實例形式分析了property函數(shù)的功能、參數(shù)、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-06-06
  • python中小數(shù)點后取2位(四舍五入)及取2位(四舍五不入)的方法

    python中小數(shù)點后取2位(四舍五入)及取2位(四舍五不入)的方法

    這篇文章主要給大家介紹了python中小數(shù)點后取2位(四舍五入)及取2位(四舍五不入)的方法,在Python中取兩位小數(shù)的方法其實非常簡單,需要的朋友可以參考下
    2023-08-08
  • Python探索之靜態(tài)方法和類方法的區(qū)別詳解

    Python探索之靜態(tài)方法和類方法的區(qū)別詳解

    這篇文章主要介紹了Python探索之靜態(tài)方法和類方法的區(qū)別詳解,小編覺得還是挺不錯的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • Python使用pylab庫實現(xiàn)繪制直方圖功能示例

    Python使用pylab庫實現(xiàn)繪制直方圖功能示例

    這篇文章主要介紹了Python使用pylab庫實現(xiàn)繪制直方圖功能,結(jié)合實例形式分析了Python數(shù)據(jù)讀取、遍歷以及基于pylab庫繪制直方圖的相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • Pytorch使用技巧之Dataloader中的collate_fn參數(shù)詳析

    Pytorch使用技巧之Dataloader中的collate_fn參數(shù)詳析

    collate_fn 參數(shù)的目的主要是為了隨心所欲的轉(zhuǎn)變數(shù)據(jù)的類型,這個數(shù)據(jù)是用DataLoader加載的,比如img,target,下面這篇文章主要給大家介紹了關(guān)于Pytorch使用技巧之Dataloader中的collate_fn參數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 在pycharm中調(diào)試fastapi應(yīng)用程序的流程步驟

    在pycharm中調(diào)試fastapi應(yīng)用程序的流程步驟

    ? FastAPI 是一個現(xiàn)代、快速(高性能)的 Web 框架,用于構(gòu)建基于 Python 的 API,它具有簡單易用的特性,同時也提供了高度自動化的文檔生成功能,本文給大家介紹了在pycharm中調(diào)試fastapi應(yīng)用程序的流程步驟,需要的朋友可以參考下
    2024-12-12
  • Python字典和集合編程技巧大總結(jié)

    Python字典和集合編程技巧大總結(jié)

    這篇文章主要給大家介紹了關(guān)于Python字典和集合編程技巧的相關(guān)資料,Python中的字典和集合是兩種非常常用的數(shù)據(jù)結(jié)構(gòu),它們可以幫助我們更方便地管理和操作數(shù)據(jù),需要的朋友可以參考下
    2023-09-09
  • Python語法學(xué)習(xí)之進程間的通信方式

    Python語法學(xué)習(xí)之進程間的通信方式

    進程在創(chuàng)建之后是沒有辦法獲取返回值的,但有的時候兩個進程之間需要進行相互之間的配合才能完成工作,這就需要通信的幫助。本文主要介紹了Python中進程間的通信方式,需要的可以了解一下
    2022-04-04

最新評論

云阳县| 陆丰市| 怀来县| 钦州市| 和田市| 内丘县| 桐柏县| 固始县| 龙口市| 阳原县| 海晏县| 宁强县| 庆云县| 宁乡县| 陈巴尔虎旗| 霍邱县| 新化县| 乐安县| 蛟河市| 布拖县| 利辛县| 南华县| 益阳市| 隆德县| 张家界市| 苍南县| 汾阳市| 北流市| 远安县| 新竹县| 遂溪县| 紫云| 托里县| 黄浦区| 辰溪县| 拉孜县| 盘锦市| 沙坪坝区| 梁河县| 朝阳市| 柳林县|