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