如何學(xué)習(xí)Python time模塊
time 模塊主要包含各種提供日期、時間功能的類和函數(shù)。該模塊既提供了把日期、時間格式化為字符串的功能,也提供了從字符串恢復(fù)日期、時間的功能。
在 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)提供了一個 time.struct_time 類,該類代表一個時間對象,它主要包含 9 個屬性,每個屬性的信息如下表所示:
表 1 time.struct_time 類中各屬性的含義
表 1 time.struct_time 類中各屬性的含義 字段名 字段含義 值 tm_year 年 如 2017、2018 等 tm_mon 月 如 2、3 等,范圍為 1~12 tm_mday 日 如 2、3 等,范圍為 1~31 tm_hour 時 如 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 夏時令 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) 很清晰地代表時間。
此外,Python 還可以用一個包含 9 個元素的元組來代表時間,該元組的 9 個元素和 struct_time 對象中 9 個屬性的含義是一一對應(yīng)的。比如程序可以使用(2018, 5, 2, 8, 0, 30, 3, 1, 0)來代表時間。
在日期、時間模塊內(nèi)常用的功能函數(shù)如下:
time.asctime([t]):將時間元組或 struct_time 轉(zhuǎn)換為時間字符串。如果不指定參數(shù) t,則默認轉(zhuǎn)換當(dāng)前時間。
time.ctime([secs]):將以秒數(shù)代表的時間轉(zhuǎn)換為時間宇符串。
time.gmtime([secs]):將以秒數(shù)代表的時間轉(zhuǎn)換為 struct_time 對象。如果不傳入?yún)?shù),則使用當(dāng)前時間。
time.localtime([secs]):將以秒數(shù)代表的時間轉(zhuǎn)換為代表當(dāng)前時間的 struct_time 對象。如果不傳入?yún)?shù),則使用當(dāng)前時間。
time.mktime(t):它是 localtime 的反轉(zhuǎn)函數(shù),用于將 struct_time 對象或元組代表的時間轉(zhuǎn)換為從 1970 年 1 月 1 日 0 點整到現(xiàn)在過了多少秒。
time.perf_counter():返回性能計數(shù)器的值。以秒為單位。
time.process_time():返回當(dāng)前進程使用 CPU 的時間。以秒為單位。
time.sleep(secs):暫停 secs 秒,什么都不干。
time.strftime(format[, t]):將時間元組或 struct_time 對象格式化為指定格式的時間字符串。如果不指定參數(shù) t,則默認轉(zhuǎn)換當(dāng)前時間。
time.strptime(string[, format]):將字符串格式的時間解析成 struct_time 對象。
time.time():返回從 1970 年 1 月 1 日 0 點整到現(xiàn)在過了多少秒。
time.timezone:返回本地時區(qū)的時間偏移,以秒為單位。
time.tzname:返回本地時區(qū)的名字。
下面程序示范了 time 棋塊的功能函數(shù):
import time# 將當(dāng)前時間轉(zhuǎn)換為時間字符串print(time.asctime())# 將指定時間轉(zhuǎn)換時間字符串,時間元組的后面3個元素沒有設(shè)置print(time.asctime((2018, 2, 4, 11, 8, 23, 0, 0 ,0))) # Mon Feb 4 11:08:23 2018# 將以秒數(shù)為代表的時間轉(zhuǎn)換為時間字符串print(time.ctime(30)) # Thu Jan 1 08:00:30 1970# 將以秒數(shù)為代表的時間轉(zhuǎn)換為struct_time對象。print(time.gmtime(30))# 將當(dāng)前時間轉(zhuǎn)換為struct_time對象。print(time.gmtime())# 將以秒數(shù)為代表的時間轉(zhuǎn)換為代表當(dāng)前時間的struct_time對象print(time.localtime(30))# 將元組格式的時間轉(zhuǎn)換為秒數(shù)代表的時間print(time.mktime((2018, 2, 4, 11, 8, 23, 0, 0 ,0))) # 1517713703.0# 返回性能計數(shù)器的值print(time.perf_counter())# 返回當(dāng)前進程使用CPU的時間print(time.process_time())#time.sleep(10)# 將當(dāng)前時間轉(zhuǎn)換為指定格式的字符串print(time.strftime(’%Y-%m-%d %H:%M:%S’))st = ’2018年3月20日’# 將指定時間字符串恢復(fù)成struct_time對象。print(time.strptime(st, ’%Y年%m月%d日’))# 返回從1970年1970年1月1日0點整到現(xiàn)在過了多少秒。print(time.time())# 返回本地時區(qū)的時間偏移,以秒為單位print(time.timezone) # 在國內(nèi)東八區(qū)輸出-28800
運行上面程序,可以看到如下輸出結(jié)果:
Fri Feb 22 11:28:39 2019Mon Feb 4 11:08:23 2018Thu Jan 1 08:00:30 1970time.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.00.00.1406252019-02-22 11:28:39time.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() 兩個函數(shù)互為逆函數(shù),其中 strftime() 用于將 struct_time 對象或時間元組轉(zhuǎn)換為時間字符串;而 strptime() 函數(shù)用于將時間字符串轉(zhuǎn)換為 struct_time 對象。這兩個函數(shù)都涉及編寫格式模板,比如上面程序中使用 %Y 代表年、%m 代表月、%d 代表日、%H 代表時、%M 代表分、%S 代表秒。這兩個函數(shù)所需要的時間格式字符串支持的指令如下表所示:
指 令 含義 %a 本地化的星期幾的縮寫名,比如 Sun 代表星期天 %A 本地化的星期幾的完整名 %b 本地化的月份的縮寫名,比如 Jan 代表一月 %B 本地化的月份的完整名 %c 本地化的日期和時間的表示形式 %d 代表一個月中第幾天的數(shù)值,范固: 01~31 %H 代表 24 小時制的小時,范圍:00~23 %I 代表 12 小時制的小時,范圍:01~12 %j 一年中第幾天,范圍:001~366 %m 代表月份的數(shù)值,范圍:01~12 %M 代表分鐘的數(shù)值,范圍:00~59 %p 上午或下午的本地化方式。當(dāng)使用 strptime() 函數(shù)并使用 %I 指令解析小時時,%p 只影響小時字段 %S 代表分鐘的數(shù)值,范圍:00~61。該范圍確實是 00~61,60 在表示閏秒的時間戳?xí)r有效,而 61 則是由于一些歷史原因造成的 %U 代表一年中表示第幾周,以星期天為每周的第一天,范圍:00~53。在這種方式下,一年中第一個星期天被認為處于第一周 。當(dāng)使用 strptime() 函數(shù)解析時間字符串時,只有同時指定了星期幾和年份該指令才會有效 %w 代表星期幾的數(shù)值,范圍:0~6,其中 0 代表周日 %W 代表一年小第幾周,以星期一為每周的第一天,范圍:00~53。在這種方式下,一年中第一個星期一被認為處于第一周 。當(dāng)使用 strptime() 函數(shù)解析時間字符串時,只有同時指定了星期幾和年份該指令才會有效 %x 本地化的日期的表示形式 %X 本地化的時間的表示形式 %y 年份的縮寫,范圍:00~99,比如 2018 年就簡寫成 18 %Y 年份的完整形式。如 2018 %z 顯示時區(qū)偏移 %Z 時區(qū)名(如果時區(qū)不行在,則顯示為空) %% 用于代表%符號
知識點擴展:
time模塊
這個模塊提供各種與時間相關(guān)的函數(shù)。相關(guān)功能,可以參見datetime和calendat模塊。
此模塊并非所有平臺提供所有功能,因平臺而異
以下是對一些術(shù)語和慣例的解釋
初始時間因平臺而異。對于Unix平臺,初始時間是1970,01,01,00:00:00(UTC)。查看每個操作平臺的初始時間可以使用time.gmtime(0)函數(shù)。 在所有POSIX平臺上,從初始時間以來的秒數(shù)都不包括閏秒 該模塊中的函數(shù)可能不處理初始時間以前和遙遠未來的日期和時間,未來的分界點對于32位操作系統(tǒng)是2038年。 UTC是協(xié)調(diào)世界時(以前稱為格林尼治標(biāo)準(zhǔn)時間,GMT)??s寫UTC不是一個錯誤,而是英語和法語之間的妥協(xié)。 DST是夏令時,在一年中的某些時候,時區(qū)通常會調(diào)整一個小時。DST規(guī)則是神奇的(由當(dāng)?shù)胤蓻Q定),每年都在變化。 各種實時函數(shù)的精度可能低于表示其值或參數(shù)的單位所建議的精度。以上就是如何學(xué)習(xí)Python time模塊的詳細內(nèi)容,更多關(guān)于Python time模塊詳解的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:

網(wǎng)公網(wǎng)安備