時間處理 time
Python 的標準函式「time」提供不少處理時間的方法,除了可以取得目前的時間或轉換時間,也能夠透過像是 sleep() 的方法將程式暫停,進一步做出許多跟時間有關的應用。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
time 常用方法
下方列出幾種 time 模組常用的方法 ( 參考 Python 官方文件:time ):
方法 | 參數 | 說明 |
---|---|---|
time() | 回傳到目前為止的秒數 | |
sleep() | sec | 將程式暫停指定的秒數 |
ctime() | t | 轉換為本地時間 |
localtime()、time.gmtime() | t | 轉換為 struct_time 格式的時間 |
mktime() | t | 轉換 struct_time 格式的時間為秒數 |
asctime() | t | 轉換 struct_time 格式的時間為文字 |
strftime()、time.strptime() | t | 回傳特定格式字串所表示的時間 |
import time
要使用 time 必須先 import time 模組,或使用 from 的方式,單獨 import 特定的類型。
import time
from time import sleep
time()
time.time() 執行後會回傳 1970 年 1 月 1 日 00:00:00 到現在的秒數 ( 精確度到 1/1000000 秒 ),秒數使用浮點數 float 的格式,如果改成 time.time_ns() 會回傳 ns 數 ( 1/1000000000 秒 )
import time
print(time.time()) # 1634629287.537577
print(time.time_ns()) # 1634629287537744648
sleep(sec)
time.sleep(sec) 能將程式暫停指定的秒數,停止結束後,在繼續後面的程式。
import time
print(time.ctime(time.time())) # Tue Oct 19 07:59:19 2021
time.sleep(2) # 暫停兩秒
print(time.ctime(time.time())) # Tue Oct 19 07:59:21 2021
ctime(t)
time.ctime(t) 能將 time.time(t) 得到的時間,轉換為本地時間。
import time
t = time.time()
print(time.ctime(t)) # Tue Oct 19 07:47:58 2021
localtime(t)、time.gmtime(t)
time.localtime(t) 和 time.gmtime(t) 能將 time.time() 得到的時間,轉換為 struct_time 格式的本地時間 ( 差別在於 time.gmtime(t) 是回傳 UTC 時間 )。
import time
t = time.time()
print(time.localtime(t))
# time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=8, tm_min=8, tm_sec=28, tm_wday=1, tm_yday=292, tm_isdst=0)
按照下方的做法,就能使用 struct_time 格式的時間。
import time
t = time.time()
tt = time.localtime(t)
print(tt.tm_year) # 2021
print(tt.tm_mon) # 10
mktime(t)
time.mktime(t) 可以將 struct_time 格式的時間轉換回秒數。
import time
t = time.time()
t1 = time.localtime(t)
t2 = time.mktime(t1)
print(t) # 1634631418.445556
print(t1) # time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=8, tm_min=16, tm_sec=58, tm_wday=1, tm_yday=292, tm_isdst=0)
print(t2) # 1634631418.0
asctime()
time.asctime(t) 可以將 struct_time 格式的時間轉換為文字顯示。
import time
t = time.time()
t1 = time.localtime(t)
t2 = time.asctime(t1)
print(t) # 1634631577.3905456
print(t1) # time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=8, tm_min=19, tm_sec=37, tm_wday=1, tm_yday=292, tm_isdst=0)
print(t2) # Tue Oct 19 08:19:37 2021
strftime(t)、time.strptime(t)
time.strftime(t) 可以將時間轉換為特定格式字串,time.strptime(t) 則會將特定格式的字串,轉換為 struct_time 格式的時間 ( 詳細可參考 strftime() 和 strptime() )
import time
t = time.time()
t1 = time.localtime(t)
t2 = time.strftime('%Y/%m/%d %H:%M:%S',t1)
t3 = time.strptime(t2, '%Y/%m/%d %H:%M:%S')
print(t) # 1634632136.9454331
print(t1) # time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=8, tm_min=28, tm_sec=56, tm_wday=1, tm_yday=292, tm_isdst=0)
print(t2) # 2021/10/19 08:28:56
print(t3) # time.struct_time(tm_year=2021, tm_mon=10, tm_mday=19, tm_hour=8, tm_min=28, tm_sec=56, tm_wday=1, tm_yday=292, tm_isdst=-1)
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~