时间处理 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)
微信扫码关注
抖音扫码关注