本篇文章為大家展示了怎么使用Python time模塊,代碼簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)是一家專業(yè)從事成都網(wǎng)站建設(shè)、成都做網(wǎng)站的網(wǎng)絡(luò)公司。作為專業(yè)網(wǎng)站制作公司,成都創(chuàng)新互聯(lián)依托的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開(kāi)發(fā)服務(wù)!
time 模塊主要包含各種提供日期、時(shí)間功能的類和函數(shù)。該模塊既提供了把日期、時(shí)間格式化為字符串的功能,也提供了從字符串恢復(fù)日期、時(shí)間的功能。
在 Python 的交互式解釋器中先導(dǎo)入 time 模塊,然后輸入 [e for e in dir(time) if not e.startswith('_')] 命令,即可看到該模塊所包含的全部屬性和函數(shù):
>>> [e for e in dir(time) if not e.startswith('_')] ['altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname']
在 time 模塊內(nèi)提供了一個(gè) time.struct_time 類,該類代表一個(gè)時(shí)間對(duì)象,它主要包含 9 個(gè)屬性,每個(gè)屬性的信息如下表所示:
字段名 | 字段含義 | 值 |
---|---|---|
tm_year | 年 | 如 2017、2018 等 |
tm_mon | 月 | 如 2、3 等,范圍為 1~12 |
tm_mday | 日 | 如 2、3 等,范圍為 1~31 |
tm_hour | 時(shí) | 如 2、3 等,范圍為 0~23 |
tm_min | 分 | 如 2、3 等,范圍為 0~59 |
tm_sec | 秒 | 如 2、3 等,范圍為 0~59 |
tm_wday | 周 | 周一為 0,范圍為 0~6 |
tm_yday | 一年內(nèi)第幾天 | 如 65,范圍 1~366 |
tm_isdst | 夏時(shí)令 | 0、1 或 -1 |
比如,Python 可以用 time.struct_time(tm_year=2018, tm_mon=5, tm_mday=2, tm_hour=8, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0) 很清晰地代表時(shí)間。
此外,Python 還可以用一個(gè)包含 9 個(gè)元素的元組來(lái)代表時(shí)間,該元組的 9 個(gè)元素和 struct_time 對(duì)象中 9 個(gè)屬性的含義是一一對(duì)應(yīng)的。比如程序可以使用(2018, 5, 2, 8, 0, 30, 3, 1, 0)來(lái)代表時(shí)間。
在日期、時(shí)間模塊內(nèi)常用的功能函數(shù)如下:
time.asctime([t]):將時(shí)間元組或 struct_time 轉(zhuǎn)換為時(shí)間字符串。如果不指定參數(shù) t,則默認(rèn)轉(zhuǎn)換當(dāng)前時(shí)間。
time.ctime([secs]):將以秒數(shù)代表的時(shí)間轉(zhuǎn)換為時(shí)間宇符串。
time.gmtime([secs]):將以秒數(shù)代表的時(shí)間轉(zhuǎn)換為 struct_time 對(duì)象。如果不傳入?yún)?shù),則使用當(dāng)前時(shí)間。
time.localtime([secs]):將以秒數(shù)代表的時(shí)間轉(zhuǎn)換為代表當(dāng)前時(shí)間的 struct_time 對(duì)象。如果不傳入?yún)?shù),則使用當(dāng)前時(shí)間。
time.mktime(t):它是 localtime 的反轉(zhuǎn)函數(shù),用于將 struct_time 對(duì)象或元組代表的時(shí)間轉(zhuǎn)換為從 1970 年 1 月 1 日 0 點(diǎn)整到現(xiàn)在過(guò)了多少秒。
time.perf_counter():返回性能計(jì)數(shù)器的值。以秒為單位。
time.process_time():返回當(dāng)前進(jìn)程使用 CPU 的時(shí)間。以秒為單位。
time.sleep(secs):暫停 secs 秒,什么都不干。
time.strftime(format[, t]):將時(shí)間元組或 struct_time 對(duì)象格式化為指定格式的時(shí)間字符串。如果不指定參數(shù) t,則默認(rèn)轉(zhuǎn)換當(dāng)前時(shí)間。
time.strptime(string[, format]):將字符串格式的時(shí)間解析成 struct_time 對(duì)象。
time.time():返回從 1970 年 1 月 1 日 0 點(diǎn)整到現(xiàn)在過(guò)了多少秒。
time.timezone:返回本地時(shí)區(qū)的時(shí)間偏移,以秒為單位。
time.tzname:返回本地時(shí)區(qū)的名字。
下面程序示范了 time 棋塊的功能函數(shù):
import time # 將當(dāng)前時(shí)間轉(zhuǎn)換為時(shí)間字符串 print(time.asctime()) # 將指定時(shí)間轉(zhuǎn)換時(shí)間字符串,時(shí)間元組的后面3個(gè)元素沒(méi)有設(shè)置 print(time.asctime((2018, 2, 4, 11, 8, 23, 0, 0 ,0))) # Mon Feb 4 11:08:23 2018 # 將以秒數(shù)為代表的時(shí)間轉(zhuǎn)換為時(shí)間字符串 print(time.ctime(30)) # Thu Jan 1 08:00:30 1970 # 將以秒數(shù)為代表的時(shí)間轉(zhuǎn)換為struct_time對(duì)象。 print(time.gmtime(30)) # 將當(dāng)前時(shí)間轉(zhuǎn)換為struct_time對(duì)象。 print(time.gmtime()) # 將以秒數(shù)為代表的時(shí)間轉(zhuǎn)換為代表當(dāng)前時(shí)間的struct_time對(duì)象 print(time.localtime(30)) # 將元組格式的時(shí)間轉(zhuǎn)換為秒數(shù)代表的時(shí)間 print(time.mktime((2018, 2, 4, 11, 8, 23, 0, 0 ,0))) # 1517713703.0 # 返回性能計(jì)數(shù)器的值 print(time.perf_counter()) # 返回當(dāng)前進(jìn)程使用CPU的時(shí)間 print(time.process_time()) #time.sleep(10) # 將當(dāng)前時(shí)間轉(zhuǎn)換為指定格式的字符串 print(time.strftime('%Y-%m-%d %H:%M:%S')) st = '2018年3月20日' # 將指定時(shí)間字符串恢復(fù)成struct_time對(duì)象。 print(time.strptime(st, '%Y年%m月%d日')) # 返回從1970年1970年1月1日0點(diǎn)整到現(xiàn)在過(guò)了多少秒。 print(time.time()) # 返回本地時(shí)區(qū)的時(shí)間偏移,以秒為單位 print(time.timezone) # 在國(guó)內(nèi)東八區(qū)輸出-28800
運(yùn)行上面程序,可以看到如下輸出結(jié)果:
Fri Feb 22 11:28:39 2019 Mon Feb 4 11:08:23 2018 Thu Jan 1 08:00:30 1970 time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0) time.struct_time(tm_year=2019, tm_mon=2, tm_mday=22, tm_hour=3, tm_min=28, tm_sec=39, tm_wday=4, tm_yday=53, tm_isdst=0) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0) 1517713703.0 0.0 0.140625 2019-02-22 11:28:39 time.struct_time(tm_year=2018, tm_mon=3, tm_mday=20, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=79, tm_isdst=-1) 1550806119.4960592 -28800
time 模塊中的 strftime() 和 strptime() 兩個(gè)函數(shù)互為逆函數(shù),其中 strftime() 用于將 struct_time 對(duì)象或時(shí)間元組轉(zhuǎn)換為時(shí)間字符串;而 strptime() 函數(shù)用于將時(shí)間字符串轉(zhuǎn)換為 struct_time 對(duì)象。這兩個(gè)函數(shù)都涉及編寫格式模板,比如上面程序中使用 %Y 代表年、%m 代表月、%d 代表日、%H 代表時(shí)、%M 代表分、%S 代表秒。這兩個(gè)函數(shù)所需要的時(shí)間格式字符串支持的指令如下表所示:
指 令 | 含義 |
---|---|
%a | 本地化的星期幾的縮寫名,比如 Sun 代表星期天 |
%A | 本地化的星期幾的完整名 |
%b | 本地化的月份的縮寫名,比如 Jan 代表一月 |
%B | 本地化的月份的完整名 |
%c | 本地化的日期和時(shí)間的表示形式 |
%d | 代表一個(gè)月中第幾天的數(shù)值,范固: 01~31 |
%H | 代表 24 小時(shí)制的小時(shí),范圍:00~23 |
%I | 代表 12 小時(shí)制的小時(shí),范圍:01~12 |
%j | 一年中第幾天,范圍:001~366 |
%m | 代表月份的數(shù)值,范圍:01~12 |
%M | 代表分鐘的數(shù)值,范圍:00~59 |
%p | 上午或下午的本地化方式。當(dāng)使用 strptime() 函數(shù)并使用 %I 指令解析小時(shí)時(shí),%p 只影響小時(shí)字段 |
%S | 代表分鐘的數(shù)值,范圍:00~61。該范圍確實(shí)是 00~61,60 在表示閏秒的時(shí)間戳?xí)r有效,而 61 則是由于一些歷史原因造成的 |
%U | 代表一年中表示第幾周,以星期天為每周的第一天,范圍:00~53。在這種方式下,一年中第一個(gè)星期天被認(rèn)為處于第一周 。當(dāng)使用 strptime() 函數(shù)解析時(shí)間字符串時(shí),只有同時(shí)指定了星期幾和年份該指令才會(huì)有效 |
%w | 代表星期幾的數(shù)值,范圍:0~6,其中 0 代表周日 |
%W | 代表一年小第幾周,以星期一為每周的第一天,范圍:00~53。在這種方式下,一年中第一個(gè)星期一被認(rèn)為處于第一周 。當(dāng)使用 strptime() 函數(shù)解析時(shí)間字符串時(shí),只有同時(shí)指定了星期幾和年份該指令才會(huì)有效 |
%x | 本地化的日期的表示形式 |
%X | 本地化的時(shí)間的表示形式 |
%y | 年份的縮寫,范圍:00~99,比如 2018 年就簡(jiǎn)寫成 18 |
%Y | 年份的完整形式。如 2018 |
%z | 顯示時(shí)區(qū)偏移 |
%Z | 時(shí)區(qū)名(如果時(shí)區(qū)不行在,則顯示為空) |
%% | 用于代表%符號(hào) |
上述內(nèi)容就是怎么使用Python time模塊,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。