【Python 标准库学习】时间相关的函数库 — time
歡迎加入 Python 官方文檔翻譯團(tuán)隊(duì):https://www.transifex.com/python-doc/
time 模塊提供了各種時(shí)間相關(guān)的函數(shù),該模塊中的大多數(shù)函數(shù)是調(diào)用了所在平臺(tái) C 語言庫的同名函數(shù),這些函數(shù)的語義因平臺(tái)而異,可能會(huì)在不同的平臺(tái)有不同的效果。
time 模塊和 datetime 模塊類似,區(qū)別在于 time 模塊提供的功能是更加接近于操作系統(tǒng)層面,所能表述的日期范圍被限定在 1970 - 2038 之間,而 datetime 模塊提供了更多實(shí)用的函數(shù),可以理解為 datetime 基于 time 進(jìn)行了封裝,更加高級(jí)。
time 模塊官方文檔:https://docs.python.org/3.7/library/time.html
部分常用函數(shù):
- 1、time.sleep(secs)
- 2、time.time()
- 3、time.gmtime([secs])
- 4、time.localtime([secs])
- 5、time.mktime(t)
- 6、time.strftime(format[, t])
- 7、time.strptime(string[, format])
- 8、time.clock()
- 9、time.asctime([t])
- 10、time.ctime([secs])
1、time.sleep(secs)
暫停所執(zhí)行的調(diào)用線程達(dá)到給定的秒數(shù),然后恢復(fù)代碼正常執(zhí)行,參數(shù)可以是浮點(diǎn)數(shù),以指示更精確的睡眠時(shí)間。實(shí)際的暫停時(shí)間可能小于請(qǐng)求的時(shí)間。
應(yīng)用舉例:
import time print('第一條語句執(zhí)行成功,5秒后執(zhí)行下一條語句...') time.sleep(5) print('第二條語句執(zhí)行成功。')2、time.time()
自紀(jì)元(Epoch)年起以秒為單位返回浮點(diǎn)數(shù)的時(shí)間
在 Windows 和大多數(shù) Unix 系統(tǒng)上,紀(jì)元開始時(shí)間是 1970 年 1 月 1 日,00:00:00(UTC)
應(yīng)用舉例:
>>> import time >>> print(time.time()) 1582879127.95894123、time.gmtime([secs])
將一個(gè)時(shí)間戳轉(zhuǎn)換為 UTC 時(shí)區(qū)的 struct_time 元組,struct_time 是在 time 模塊中定義的表示時(shí)間的對(duì)象,可選的參數(shù) secs 表示從紀(jì)元(Epoch)年起到現(xiàn)在的秒數(shù),即從1970 年 1 月 1 日,00:00:00 起到現(xiàn)在的秒數(shù),其默認(rèn)值為 time.time(),函數(shù)返回 time.struct_time 類型的對(duì)象。
應(yīng)用舉例:
>>> 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 元組結(jié)構(gòu)具有如下屬性:
| 0 | tm_year | 4 位數(shù),年 |
| 1 | tm_mon | 1 - 12,月 |
| 2 | tm_mday | 1 - 31,日 |
| 3 | tm_hour | 0 - 23,小時(shí) |
| 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 表示夏令時(shí),0 表示非夏令時(shí),-1 表示未知 |
4、time.localtime([secs])
localtime() 函數(shù)類似 gmtime(),作用是格式化時(shí)間戳為本地的時(shí)間,如果 secs 參數(shù)未輸入,則以當(dāng)前時(shí)間為轉(zhuǎn)換標(biāo)準(zhǔn)。
應(yīng)用舉例:
>>> 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)
該函數(shù)執(zhí)行與 gmtime() 和 localtime() 相反的操作,它接收 struct_time 對(duì)象作為參數(shù),返回用秒數(shù)來表示時(shí)間的浮點(diǎn)數(shù)。t 參數(shù)表示結(jié)構(gòu)化的時(shí)間或者完整的9位元組元素。
如果輸入的值不是一個(gè)合法的時(shí)間,將觸發(fā) OverflowError 或 ValueError。
應(yīng)用舉例:
>>> print(time.mktime((2020,2,28,20,40,14,5,59,0))) 1582893614.06、time.strftime(format[, t])
根據(jù)帶時(shí)間格式符號(hào)的字符串解析時(shí)間,并返回字符串,轉(zhuǎn)換一個(gè)元組或 struct_time 時(shí)間到由 format 參數(shù)指定的字符串格式。如果未提供 t ,則使用由 localtime() 返回的當(dāng)前時(shí)間,format 必須是一個(gè)字符串,如果 t 中的任何字段超出允許范圍,則引發(fā) ValueError 。
應(yīng)用舉例:
>>> 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() 返回的當(dāng)前時(shí)間 Fri Feb 28 20:15:16 20207、time.strptime(string[, format])
與 time.strftime() 函數(shù)相反,time.strptime() 則是根據(jù)指定的格式把一個(gè)時(shí)間字符串解析為時(shí)間元組。string 參數(shù)表示時(shí)間字符串,format 參數(shù)表示格式化字符串。
應(yīng)用舉例:
>>> 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 參數(shù)為時(shí)間日期格式化符號(hào),各個(gè)格式化符號(hào)所代表的意思如下:
| %a | 本地簡化星期名稱 |
| %A | 本地完整星期名稱 |
| %b | 本地簡化的月份名稱 |
| %B | 本地完整的月份名稱 |
| %c | 本地相應(yīng)的日期表示和時(shí)間表示 |
| %d | 月內(nèi)中的一天(0-31) |
| %f | 以十進(jìn)制數(shù)表示的毫秒,在左側(cè)補(bǔ)零 |
| %H | 24小時(shí)制小時(shí)數(shù)(0-23) |
| %I | 12小時(shí)制小時(shí)數(shù)(01-12) |
| %j | 年內(nèi)的一天(001-366) |
| %m | 月份(01-12) |
| %M | 分鐘數(shù)(00=59) |
| %p | 本地A.M.或P.M.的等價(jià)符 |
| %S | 秒(00-59) |
| %U | 一年中的星期數(shù)(00-53)星期天為星期的開始 |
| %w | 星期(0-6),星期天為星期的開始 |
| %W | 一年中的星期數(shù)(00-53)星期一為星期的開始 |
| %x | 本地相應(yīng)的日期表示 |
| %X | 本地相應(yīng)的時(shí)間表示 |
| %y | 兩位數(shù)的年份表示(00-99) |
| %Y | 四位數(shù)的年份表示(000-9999) |
| %z | ±HHMM[SS[.ffffff]] 形式的 UTC 差值(如果對(duì)象為簡單型則為空字符串) |
| %Z | 當(dāng)前時(shí)區(qū)的名稱 |
| %% | %號(hào)本身 |
8、time.clock()
將當(dāng)前 CPU 處理器時(shí)間返回為以秒為單位的浮點(diǎn)數(shù),通常用來衡量不同程序的耗時(shí),比 time.time() 更有用。
注意:該函數(shù)在不同的系統(tǒng)上含義不同,在 Unix 系統(tǒng)上,它返回的是“進(jìn)程時(shí)間”,它是用秒表示的浮點(diǎn)數(shù)(時(shí)間戳)。而在 Windows 中,第一次調(diào)用,返回的是進(jìn)程運(yùn)行的實(shí)際時(shí)間,而第二次之后的調(diào)用是自第一次調(diào)用以后到現(xiàn)在的運(yùn)行時(shí)間。(實(shí)際上是以 Win32 上 QueryPerformanceCounter() 為基礎(chǔ),它比毫秒表示更為精確)
應(yīng)用舉例:
>>> import time >>> time.clock() # 獲取時(shí)鐘秒數(shù) 3e-07 # 第一次調(diào)用該函數(shù)以來到執(zhí)行截止的秒數(shù) >>> t1 = time.clock() # 第二次執(zhí)行該函數(shù)截止秒數(shù) >>> t2 = time.clock() # 第三次執(zhí)行該函數(shù)截止秒數(shù) >>> t2 - t1 # 第三次與第二次執(zhí)行該函數(shù)截止秒數(shù)差 9.14337329、time.asctime([t])
該函數(shù)接受時(shí)間元組,并返回一個(gè)可讀的形式為 Fri Feb 28 20:40:14 2020(2020年2月28日 周五20時(shí)40分14秒)的24個(gè)字符的字符串。
日期字段的長度為兩個(gè)字符,如果日期只有一個(gè)數(shù)字則會(huì)以零填充。
如果不加參數(shù) t,默認(rèn)就是 time.localtime() 返回的時(shí)間元組。
接受的時(shí)間元組可以是由 gmtime() 或 localtime() 所返回的表示時(shí)間的元組。
應(yīng)用舉例:
>>> print(time.asctime()) # 不接收參數(shù),默認(rèn) time.localtime() 返回的時(shí)間元組 Fri Feb 28 20:44:16 2020 >>> >>> print(time.asctime(time.localtime())) # 接受 time.localtime() 參數(shù) Fri Feb 28 20:45:49 2020 >>> >>> print(time.asctime((2020,2,28,20,40,14,5,59,0))) # 人工指定時(shí)間結(jié)構(gòu)元組 Sat Feb 28 20:40:14 202010、time.ctime([secs])
該函數(shù)把一個(gè)時(shí)間戳(按秒計(jì)算的浮點(diǎn)數(shù))轉(zhuǎn)化為 time.asctime() 的形式。 如果參數(shù)未給或者為 None 的時(shí)候,將會(huì)默認(rèn) time.time() 為參數(shù)。它的作用相當(dāng)于 asctime(localtime(secs))。secs 參數(shù)表示要轉(zhuǎn)換為字符串時(shí)間的秒數(shù)。
應(yīng)用舉例:
>>> print(time.ctime()) Fri Feb 28 20:55:23 2020 >>> >>> print(time.ctime(1582879127)) Fri Feb 28 16:38:47 2020總結(jié)
以上是生活随笔為你收集整理的【Python 标准库学习】时间相关的函数库 — time的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构 - 栈(数组模拟栈操作)
- 下一篇: B站上线首个付费视频被吐槽“血亏” UP