Python time庫的時間時鐘處理
前言
time庫運行訪問多種類型的時鐘,這些時鐘用於不同的場景。本篇,將詳細講解time庫的應用知識。
獲取各種時鐘
既然time庫提供瞭多種類型的時鐘。下面我們直接來獲取這些時鐘,對比其具體的用途。具體代碼如下:
import time print(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:用於測量一個長時間運行的進程的耗用時間,因為即使系統時間有改變,也能保證這個時鐘不會逆轉。
- perf_counter:允許訪問有最高可用分辨率的時鐘,這使得短時間測量更為準確。
- process_time:返回處理器時間和系統時間的組合結果。
- time:返回從”紀元“開始以來的秒數。UNIX系統從1970年1月1日00:00開始計算。
運行之後,效果如下:
至於ns後綴,是返回納秒時間。
獲取當前時間
time.time()函數是獲取”紀元“時間,是不是可以通過秒分時的換算計算出現在的日期時間呢?
當然可以,不過這太麻煩瞭,time庫還給我們提供瞭更簡單的函數time.ctime()獲取當前的日期與時間。具體代碼如下所示:
import time print(time.ctime())
運行之後,效果如下:
這裡返回瞭星期六:Sat,月份4月10號:Apr 10,年份:2021以及當前的時間。
時間加減法
如果你掌握瞭time.ctime()函數的參數用法,那麼計算時間的加減法也可以輕而易舉的實現。不過有一點需要註意,就是需要將加減的參數需全部換成秒。比如1天後,那麼就是加86400。具體代碼如下:
import time #獲取當前時間 print(time.ctime()) #獲取當前時間 later=time.time()+86400 #計算一天後的時間 print(time.ctime(later)) #計算20秒後的時間 print(time.ctime(time.time()+20))
運行之後,效果如下:
strptime()函數
上面的代碼雖然可以獲取以及計算時間,但是獲取的時間非常的籠統。比如說,日歷應用程序,我隻需要計算今天是星期幾,並不需要知道其他數據怎麼辦?
顯然,我們需要分離關鍵的時間數據。而time庫提供瞭函數strptime()用於返回時間結構體數據struct_time對象。具體代碼如下:
import time now = time.ctime() struct_time = time.strptime(now) print("當前年份:", struct_time.tm_year) print("當前月份:", struct_time.tm_mon) print("當前日(年月日中的日):", struct_time.tm_mday) print("當前小時數:", struct_time.tm_hour) print("當前分鐘數:", struct_time.tm_min) print("當前星期:", struct_time.tm_wday+1) print("今年過瞭{0}天(包括今天)".format(struct_time.tm_yday))
運行之後效果如下:
需要註意的是,程序中的星期一是0,tm_wday等於5,那麼就需要加一,也就是等於星期六。
strftime()函數
通過strptime()函數,我們雖然能夠獲取到單一的日期相關的數據。但是我如果隻想要當前的時間,怎麼辦?當然,你可以通過上面的分解,將時,分,秒分別轉換為字符串然後拼接。不過這樣太麻煩瞭,我們有個更簡單的方法。
這裡,我們就需要用到time.strftime()函數。用法如下:
import time s = time.strftime("%H:%M:%S", time.localtime()) print(s)
運行之後,效果如下:
需要註意的是,strftime()函數的第2個參數接受一個struct_time對象。而time.localtime()的作用就是格式化時間戳為本地的時間,它有一個sec參數,也就是對應的time.time()函數的秒數,將秒數轉換為標準的時間。如果沒有參數,返回當前時間。
至於第1個參數,用特定的標識符,表示需要篩選的數據。具體用法如下表:
符號 | 含義 |
---|---|
%y | 兩位數的年份表示(00-99) |
%Y | 四位數的年份表示(000-9999) |
%m | 月份(01-12) |
%d | 月內中的一天(0-31) |
%H | 24小時制小時數(0-23) |
%I | 12小時制小時數(01-12) |
%M | 分鐘數(00=59) |
%S | 秒(00-59) |
%a | 本地簡化星期名稱 |
%A | 本地完整星期名稱 |
%b | 本地簡化的月份名稱 |
%B | 本地完整的月份名稱 |
%c | 本地相應的日期表示和時間表示 |
%j | 年內的一天(001-366) |
%p | 本地A.M.或P.M.的等價符 |
%U | 一年中的星期數(00-53)星期天為星期的開始 |
%w | 星期(0-6),星期天為星期的開始 |
%W | 一年中的星期數(00-53)星期一為星期的開始 |
%x | 本地相應的日期表示 |
%X | 本地相應的時間表示 |
%Z | 當前時區的名稱 |
%% | %號本身 |
mktime()函數
假如現在我們有一個需求,就是自己輸入時間的年月日時分秒,然後計算500秒後的時間點。怎麼實現呢?
首先,我們需要實現time庫的加法運算,就需要將我們輸入的日期數據轉換為time庫可識別的日期數據,而time.mktime()函數能夠將數字轉換為time庫的日期數據,然後再進行加減法運算。
具體操作如下:
import time t = (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 + 500 struct_time = time.localtime(second_time2) print(time.strftime("%Y-%m-%d %H:%M:%S", struct_time))
運行之後,效果如下:
需要註意的是,time.mktime()函數接受9位的元組數據,少一位都會報錯。元組數據的意義分別為年,月,日,時,分,秒,星期幾,今年第幾天,是否為夏令時。當倒數2,3位數與前面日期沖突時,time.mktime()函數會自動修正。
gmtime()函數
這個函數不做過多的講解,簡單的理解就是返回UTC時區的struct_time對象。也就是國際協調時間。
具體用法如下:
import time utc_now = time.gmtime() print(utc_now) print(time.strftime("%Y-%m-%d %H:%M:%S", utc_now))
運行之後,效果如下:
到此這篇關於Python time庫的時間時鐘處理的文章就介紹到這瞭,更多相關Python time庫時間時鐘內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python中time庫使用詳解
- Python時間和日期庫的實現
- python語言time庫和datetime庫基本使用詳解
- Python中time庫的使用(日期時間)
- Python中的time模塊和calendar模塊