目錄
時間獲取
時間格式化
程序計時
time庫包含三類函數:
時間獲取:time()? ? ? ? ctime()? ? ? ? gmtime()
時間格式化:strtime()? ? ? ? strptime()????????
程序計時:sleep()? ? ? ? perf_counter()
下面逐一介紹:
時間獲取
函數 | 描述 |
time() | ? 獲取當前時間戳(從世界標準時間的1970年1月1日00:00:00開始到當前這一時刻為止的總秒數)即計算機內部時間值,浮點數 |
? >>>time.time() | |
1516939877 | |
ctime() | ? 獲取當前時間并以易讀方式表示,返回字符串 |
?>>>time.ctime() | |
?'Fri Jan 26 12:11:16 2023' | |
gmtime([secs]) | ? 獲取當前時間,結構化,表示為計算機可處理的時間格式, |
? >>>time.gmtime() | |
?time.struct_time(tm_year=2023, tm_mon=1,??? | |
?tm_mday=26, tm_hour=4, tm_min=11, tm_sec=16,?? | |
?tm_wday=4, tm_yday=26, tm_isdst=0) | |
localtime([secs]) | 功能同上,localtime獲取當地的時間,而gmtime獲取世界統一時間 |
其中struct_time元組中元素的含義分別為
元素 | 含義 | 取值 |
tm_year | 年 | 4位數字,如2023 |
tm_mon | 月 | 1~12 |
tm_mday | 日 | 1~31 |
tm_hour | 時 | 0~23 |
tm_min | 分 | 0~59 |
tm_sec | 秒 | 0~61(60或 61是閏秒) |
tm_wday | 一周的第幾日 | 0~6(0為周一) |
tm_yday | 一年的第幾日 | 1~366(366為儒略歷) |
tm_isdst | 夏令時 | 1:夏令時 |
0:非夏令時 | ||
-1:不確定 |
時間格式化
strftime(tpl,ts)
tpl是格式化模板字符串,用來定義輸出效果
ts是計算機內部時間類型變量
>>>t = time.gmtime()>>>time.strftime("%Y-%m-%d %H:%M:%S",t)'2023-01-26 12:55:20'
strptime(str,tpl)
str是字符串形式的時間值
tpl是格式化模板字符串,用來定義輸入效果
>>>timeStr = ‘2023-01-26 12:55:20'
>>>time.strptime(timeStr, "%Y-%m-%d %H:%M:%S")#輸出結果time.struct_time(tm_year=2023, tm_mon=1, tm_mday=26, tm_hour=12, tm_min=55, tm_sec=20, tm_wday=3, tm_yday=26, tm_isdst=-1)
現在總結一下格式化控制符
格式化字符串 | 日期/時間說明 | 值范圍和實例 |
%Y | 年份 | ? 0000~9999,例如:1900 |
%m | 月份 | ? 01~12,例如:10 |
%B | 月份名稱 | ? January~December,例如:April |
%b | 月份名稱縮寫 | ? Jan~Dec,例如:Apr |
%d | 日期 | ? 01~31,例如:25 |
%A | 星期 | ? Monday~Sunday,例如:Wednesday |
%a | 星期縮寫 | ? Mon~Sun,例如:Wed |
%H | 小時(24h制) | ? 00~23,例如:12 |
%I | 小時(12h制) | ? 01~12,例如:7 |
%p | 上/下午 | ? AM, PM,例如:PM |
%M | 分鐘 | ? 00~59,例如:26 |
%S | 秒 | ? 00~59,例如:26 |
程序計時
程序計時指的是測量起止動作所經歷時間的過程
測量時間:perf_counter()
產生時間:sleep()
perf_counter()
#返回一個CPU級別的精確時間計數值,單位為秒由于這個計數值起點不確定,連續調用差值才有意義
>>>start = time.perf_counter()318.66599499718114>>>end = time.perf_counter() 341.3905185375658>>>end - start22.724523540384666
?sleep(s)
s是休眠時間,單位為秒,可以是浮點數
>>>def wait():time.sleep(3.3)
>>>wait() #程序將等待3.3秒后再退出
?舉例:文本進度條
import time
scale = 10
print("------執行開始------")
for i in range(scale+1):a = '*' * ib = '.' * (scale - i)c = (i/scale)*100print("{:^3.0f}%[{}->{}]".format(c,a,b))time.sleep(0.1)
print("------執行結束------")
結果:
如果想實現單行刷新,只需要加入"\r",即打印后光標退回到之前的位置\r
??? print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
import time
scale = 50
print("執行開始".center(scale//2, "-"))
start = time.perf_counter()
for i in range(scale+1):a = '*' * ib = '.' * (scale - i)c = (i/scale)*100dur = time.perf_counter() - startprint("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')time.sleep(0.1)
print("\n"+"執行結束".center(scale//2,'-'))
?結果: