【Python 標準庫解讀】時間相關的函數庫 — time

歡迎加入 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章