歡迎加入 Python 官方文檔翻譯團隊:https://www.transifex.com/python-doc/
time 模塊提供了各種時間相關的函數,該模塊中的大多數函數是調用了所在平臺 C 語言庫的同名函數,這些函數的語義因平臺而異,可能會在不同的平臺有不同的效果。
time 模塊和 datetime 模塊類似,區別在於 time 模塊提供的功能是更加接近於操作系統層面,所能表述的日期範圍被限定在 1970 - 2038 之間,而 datetime 模塊提供了更多實用的函數,可以理解爲 datetime 基於 time 進行了封裝,更加高級。
time 模塊官方文檔:https://docs.python.org/3.7/library/time.html
部分常用函數:
1、time.sleep(secs)
暫停所執行的調用線程達到給定的秒數,然後恢復代碼正常執行,參數可以是浮點數,以指示更精確的睡眠時間。實際的暫停時間可能小於請求的時間。
應用舉例:
import time
print('第一條語句執行成功,5秒後執行下一條語句...')
time.sleep(5)
print('第二條語句執行成功。')
2、time.time()
自紀元(Epoch)年起以秒爲單位返回浮點數的時間
在 Windows 和大多數 Unix 系統上,紀元開始時間是 1970 年 1 月 1 日,00:00:00(UTC)
應用舉例:
>>> import time
>>> print(time.time())
1582879127.9589412
3、time.gmtime([secs])
將一個時間戳轉換爲 UTC 時區的 struct_time
元組,struct_time
是在 time 模塊中定義的表示時間的對象,可選的參數 secs 表示從紀元(Epoch)年起到現在的秒數,即從1970 年 1 月 1 日,00:00:00 起到現在的秒數,其默認值爲 time.time()
,函數返回 time.struct_time
類型的對象。
應用舉例:
>>> import time
>>> print(time.gmtime())
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=28, tm_hour=10, tm_min=18, tm_sec=1, tm_wday=4, tm_yday=59, tm_isdst=0)
>>>
>>> print(time.gmtime(1582879127))
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=28, tm_hour=8, tm_min=38, tm_sec=47, tm_wday=4, tm_yday=59, tm_isdst=0)
>>>
>>> print(time.gmtime(666666.123456))
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=8, tm_hour=17, tm_min=11, tm_sec=6, tm_wday=3, tm_yday=8, tm_isdst=0)
struct_time
元組結構具有如下屬性:
序號 | 屬性 | 值 |
---|---|---|
0 | tm_year | 4 位數,年 |
1 | tm_mon | 1 - 12,月 |
2 | tm_mday | 1 - 31,日 |
3 | tm_hour | 0 - 23,小時 |
4 | tm_min | 0 - 59,分鐘 |
5 | tm_sec | 0 - 61,秒 (60 或 61 是閏秒) |
6 | tm_wday | 0 - 6,一週的第幾日 (0 是週一) |
7 | tm_yday | 1 - 366,一年的第幾日(儒略曆) |
8 | tm_isdst | 1 表示夏令時,0 表示非夏令時,-1 表示未知 |
4、time.localtime([secs])
localtime()
函數類似 gmtime()
,作用是格式化時間戳爲本地的時間,如果 secs 參數未輸入,則以當前時間爲轉換標準。
應用舉例:
>>> import time
>>> print(time.localtime())
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=28, tm_hour=19, tm_min=55, tm_sec=9, tm_wday=4, tm_yday=59, tm_isdst=0)
>>>
>>> print(time.localtime(1582879127))
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=28, tm_hour=16, tm_min=38, tm_sec=47, tm_wday=4, tm_yday=59, tm_isdst=0)
5、time.mktime(t)
該函數執行與 gmtime()
和 localtime()
相反的操作,它接收 struct_time
對象作爲參數,返回用秒數來表示時間的浮點數。t 參數表示結構化的時間或者完整的9位元組元素。
如果輸入的值不是一個合法的時間,將觸發 OverflowError 或 ValueError。
應用舉例:
>>> print(time.mktime((2020,2,28,20,40,14,5,59,0)))
1582893614.0
6、time.strftime(format[, t])
根據帶時間格式符號的字符串解析時間,並返回字符串,轉換一個元組或 struct_time
時間到由 format 參數指定的字符串格式。如果未提供 t ,則使用由 localtime() 返回的當前時間,format 必須是一個字符串,如果 t 中的任何字段超出允許範圍,則引發 ValueError 。
應用舉例:
>>> import time
>>> print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
2020-02-28 20:10:24
>>>
>>> print(time.strftime('%a %b %d %H:%M:%S %Y', time.localtime()))
Fri Feb 28 20:13:49 2020
>>>
>>> print(time.strftime('%a %b %d %H:%M:%S %Y')) # 未指定 t,則使用由 localtime() 返回的當前時間
Fri Feb 28 20:15:16 2020
7、time.strptime(string[, format])
與 time.strftime()
函數相反,time.strptime()
則是根據指定的格式把一個時間字符串解析爲時間元組。string 參數表示時間字符串,format 參數表示格式化字符串。
應用舉例:
>>> import time
>>> print(time.strptime("Fri Feb 28 20:13:49 2020", "%a %b %d %H:%M:%S %Y"))
time.struct_time(tm_year=2020, tm_mon=2, tm_mday=28, tm_hour=20, tm_min=13, tm_sec=49, tm_wday=4, tm_yday=59, tm_isdst=-1)
strftime()
和 strptime()
方法中 format 參數爲時間日期格式化符號,各個格式化符號所代表的意思如下:
格式化符號 | 含義 |
---|---|
%a | 本地簡化星期名稱 |
%A | 本地完整星期名稱 |
%b | 本地簡化的月份名稱 |
%B | 本地完整的月份名稱 |
%c | 本地相應的日期表示和時間表示 |
%d | 月內中的一天(0-31) |
%f | 以十進制數表示的毫秒,在左側補零 |
%H | 24小時制小時數(0-23) |
%I | 12小時制小時數(01-12) |
%j | 年內的一天(001-366) |
%m | 月份(01-12) |
%M | 分鐘數(00=59) |
%p | 本地A.M.或P.M.的等價符 |
%S | 秒(00-59) |
%U | 一年中的星期數(00-53)星期天爲星期的開始 |
%w | 星期(0-6),星期天爲星期的開始 |
%W | 一年中的星期數(00-53)星期一爲星期的開始 |
%x | 本地相應的日期表示 |
%X | 本地相應的時間表示 |
%y | 兩位數的年份表示(00-99) |
%Y | 四位數的年份表示(000-9999) |
%z | ±HHMM[SS[.ffffff]] 形式的 UTC 差值(如果對象爲簡單型則爲空字符串) |
%Z | 當前時區的名稱 |
%% | %號本身 |
8、time.clock()
將當前 CPU 處理器時間返回爲以秒爲單位的浮點數,通常用來衡量不同程序的耗時,比 time.time()
更有用。
注意:該函數在不同的系統上含義不同,在 Unix 系統上,它返回的是“進程時間”,它是用秒錶示的浮點數(時間戳)。而在 Windows 中,第一次調用,返回的是進程運行的實際時間,而第二次之後的調用是自第一次調用以後到現在的運行時間。(實際上是以 Win32 上 QueryPerformanceCounter() 爲基礎,它比毫秒錶示更爲精確)
應用舉例:
>>> import time
>>> time.clock() # 獲取時鐘秒數
3e-07 # 第一次調用該函數以來到執行截止的秒數
>>> t1 = time.clock() # 第二次執行該函數截止秒數
>>> t2 = time.clock() # 第三次執行該函數截止秒數
>>> t2 - t1 # 第三次與第二次執行該函數截止秒數差
9.1433732
9、time.asctime([t])
該函數接受時間元組,並返回一個可讀的形式爲 Fri Feb 28 20:40:14 2020
(2020年2月28日 週五20時40分14秒)的24個字符的字符串。
日期字段的長度爲兩個字符,如果日期只有一個數字則會以零填充。
如果不加參數 t,默認就是 time.localtime()
返回的時間元組。
接受的時間元組可以是由 gmtime()
或 localtime()
所返回的表示時間的元組。
應用舉例:
>>> print(time.asctime()) # 不接收參數,默認 time.localtime() 返回的時間元組
Fri Feb 28 20:44:16 2020
>>>
>>> print(time.asctime(time.localtime())) # 接受 time.localtime() 參數
Fri Feb 28 20:45:49 2020
>>>
>>> print(time.asctime((2020,2,28,20,40,14,5,59,0))) # 人工指定時間結構元組
Sat Feb 28 20:40:14 2020
10、time.ctime([secs])
該函數把一個時間戳(按秒計算的浮點數)轉化爲 time.asctime()
的形式。 如果參數未給或者爲 None 的時候,將會默認 time.time()
爲參數。它的作用相當於 asctime(localtime(secs))
。secs 參數表示要轉換爲字符串時間的秒數。
應用舉例:
>>> print(time.ctime())
Fri Feb 28 20:55:23 2020
>>>
>>> print(time.ctime(1582879127))
Fri Feb 28 16:38:47 2020