Python time庫的時間時鐘處理
time庫運行訪問多種類型的時鐘,這些時鐘用于不同的場景。本篇,將詳細講解time庫的應(yīng)用知識。
獲取各種時鐘既然time庫提供了多種類型的時鐘。下面我們直接來獲取這些時鐘,對比其具體的用途。具體代碼如下:
import timeprint(time.monotonic())print(time.monotonic_ns())print(time.perf_counter())print(time.perf_counter_ns())print(time.process_time())print(time.process_time_ns())print(time.time())print(time.time_ns())
上面的代碼具體的意義如下:
monotonic:用于測量一個長時間運行的進程的耗用時間,因為即使系統(tǒng)時間有改變,也能保證這個時鐘不會逆轉(zhuǎn)。 perf_counter:允許訪問有最高可用分辨率的時鐘,這使得短時間測量更為準確。 process_time:返回處理器時間和系統(tǒng)時間的組合結(jié)果。 time:返回從”紀元“開始以來的秒數(shù)。UNIX系統(tǒng)從1970年1月1日00:00開始計算。運行之后,效果如下:
至于ns后綴,是返回納秒時間。
獲取當前時間time.time()函數(shù)是獲取”紀元“時間,是不是可以通過秒分時的換算計算出現(xiàn)在的日期時間呢?
當然可以,不過這太麻煩了,time庫還給我們提供了更簡單的函數(shù)time.ctime()獲取當前的日期與時間。具體代碼如下所示:
import timeprint(time.ctime())
運行之后,效果如下:
這里返回了星期六:Sat,月份4月10號:Apr 10,年份:2021以及當前的時間。
時間加減法如果你掌握了time.ctime()函數(shù)的參數(shù)用法,那么計算時間的加減法也可以輕而易舉的實現(xiàn)。不過有一點需要注意,就是需要將加減的參數(shù)需全部換成秒。比如1天后,那么就是加86400。具體代碼如下:
import time#獲取當前時間print(time.ctime())#獲取當前時間later=time.time()+86400#計算一天后的時間print(time.ctime(later))#計算20秒后的時間print(time.ctime(time.time()+20))
運行之后,效果如下:
上面的代碼雖然可以獲取以及計算時間,但是獲取的時間非常的籠統(tǒng)。比如說,日歷應(yīng)用程序,我只需要計算今天是星期幾,并不需要知道其他數(shù)據(jù)怎么辦?
顯然,我們需要分離關(guān)鍵的時間數(shù)據(jù)。而time庫提供了函數(shù)strptime()用于返回時間結(jié)構(gòu)體數(shù)據(jù)struct_time對象。具體代碼如下:
import timenow = time.ctime()struct_time = time.strptime(now)print('當前年份:', struct_time.tm_year)print('當前月份:', struct_time.tm_mon)print('當前日(年月日中的日):', struct_time.tm_mday)print('當前小時數(shù):', struct_time.tm_hour)print('當前分鐘數(shù):', struct_time.tm_min)print('當前星期:', struct_time.tm_wday+1)print('今年過了{0}天(包括今天)'.format(struct_time.tm_yday))
運行之后效果如下:
需要注意的是,程序中的星期一是0,tm_wday等于5,那么就需要加一,也就是等于星期六。
strftime()函數(shù)通過strptime()函數(shù),我們雖然能夠獲取到單一的日期相關(guān)的數(shù)據(jù)。但是我如果只想要當前的時間,怎么辦?當然,你可以通過上面的分解,將時,分,秒分別轉(zhuǎn)換為字符串然后拼接。不過這樣太麻煩了,我們有個更簡單的方法。
這里,我們就需要用到time.strftime()函數(shù)。用法如下:
import times = time.strftime('%H:%M:%S', time.localtime())print(s)
運行之后,效果如下:
需要注意的是,strftime()函數(shù)的第2個參數(shù)接受一個struct_time對象。而time.localtime()的作用就是格式化時間戳為本地的時間,它有一個sec參數(shù),也就是對應(yīng)的time.time()函數(shù)的秒數(shù),將秒數(shù)轉(zhuǎn)換為標準的時間。如果沒有參數(shù),返回當前時間。
至于第1個參數(shù),用特定的標識符,表示需要篩選的數(shù)據(jù)。具體用法如下表:
符號 含義 %y 兩位數(shù)的年份表示(00-99) %Y 四位數(shù)的年份表示(000-9999) %m 月份(01-12) %d 月內(nèi)中的一天(0-31) %H 24小時制小時數(shù)(0-23) %I 12小時制小時數(shù)(01-12) %M 分鐘數(shù)(00=59) %S 秒(00-59) %a 本地簡化星期名稱 %A 本地完整星期名稱 %b 本地簡化的月份名稱 %B 本地完整的月份名稱 %c 本地相應(yīng)的日期表示和時間表示 %j 年內(nèi)的一天(001-366) %p 本地A.M.或P.M.的等價符 %U 一年中的星期數(shù)(00-53)星期天為星期的開始 %w 星期(0-6),星期天為星期的開始 %W 一年中的星期數(shù)(00-53)星期一為星期的開始 %x 本地相應(yīng)的日期表示 %X 本地相應(yīng)的時間表示 %Z 當前時區(qū)的名稱 %% %號本身
mktime()函數(shù)假如現(xiàn)在我們有一個需求,就是自己輸入時間的年月日時分秒,然后計算500秒后的時間點。怎么實現(xiàn)呢?
首先,我們需要實現(xiàn)time庫的加法運算,就需要將我們輸入的日期數(shù)據(jù)轉(zhuǎn)換為time庫可識別的日期數(shù)據(jù),而time.mktime()函數(shù)能夠?qū)?shù)字轉(zhuǎn)換為time庫的日期數(shù)據(jù),然后再進行加減法運算。
具體操作如下:
import timet = (2021, 2, 17, 17, 3, 38, 1, 48, 0)second_time = time.mktime(t)struct_time = time.localtime(second_time)print(time.strftime('%Y-%m-%d %H:%M:%S', struct_time))second_time2 = second_time + 500struct_time = time.localtime(second_time2)print(time.strftime('%Y-%m-%d %H:%M:%S', struct_time))
運行之后,效果如下:
需要注意的是,time.mktime()函數(shù)接受9位的元組數(shù)據(jù),少一位都會報錯。元組數(shù)據(jù)的意義分別為年,月,日,時,分,秒,星期幾,今年第幾天,是否為夏令時。當?shù)箶?shù)2,3位數(shù)與前面日期沖突時,time.mktime()函數(shù)會自動修正。
gmtime()函數(shù)這個函數(shù)不做過多的講解,簡單的理解就是返回UTC時區(qū)的struct_time對象。也就是國際協(xié)調(diào)時間。
具體用法如下:
import timeutc_now = time.gmtime()print(utc_now)print(time.strftime('%Y-%m-%d %H:%M:%S', utc_now))
運行之后,效果如下:
到此這篇關(guān)于Python time庫的時間時鐘處理的文章就介紹到這了,更多相關(guān)Python time庫時間時鐘內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. CSS hack用法案例詳解2. css進階學習 選擇符3. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera4. 使用css實現(xiàn)全兼容tooltip提示框5. 低版本IE正常運行HTML5+CSS3網(wǎng)站的3種解決方案6. 使用純HTML的通用數(shù)據(jù)管理和服務(wù)7. css代碼優(yōu)化的12個技巧8. 告別AJAX實現(xiàn)無刷新提交表單9. HTML DOM setInterval和clearInterval方法案例詳解10. CSS3實例分享之多重背景的實現(xiàn)(Multiple backgrounds)
