Python中的time模塊和calendar模塊
在Python
中對(duì)時(shí)間和日期的處理方式有很多,其中轉(zhuǎn)換日期是最常見(jiàn)的一個(gè)功能。Python
中的時(shí)間間隔是以秒為單位的浮點(diǎn)小數(shù)。
1、時(shí)間戳
Python
中基本都是以時(shí)間戳來(lái)保存當(dāng)前時(shí)間的。時(shí)間戳單位最適于做日期運(yùn)算。但是1970年之前的日期就無(wú)法以此表示了。太遙遠(yuǎn)的日期也不行,UNIX
和Windows
只支持到2038
年。
時(shí)間戳是指格林威治時(shí)間1970年01月01日00時(shí)00分00秒起至當(dāng)下的總秒數(shù)。通俗的講, 時(shí)間戳是一份能夠表示一份數(shù)據(jù)在一個(gè)特定時(shí)間點(diǎn)已經(jīng)存在的完整的可驗(yàn)證的數(shù)據(jù)。 它的提出主要是為用戶提供一份電子證據(jù), 以證明用戶的某些數(shù)據(jù)的產(chǎn)生時(shí)間。
Python
中使用time
模塊的time
函數(shù)來(lái)獲取當(dāng)前的時(shí)間戳
示例代碼:
import time time_stamp = time.time() print("當(dāng)前的時(shí)間戳為:", time_stamp) # 當(dāng)前的時(shí)間戳為: 1590585400.6808906
2、時(shí)間元組
Python
中的很多函數(shù)都是用一個(gè)元組裝起來(lái)9組數(shù)字來(lái)處理時(shí)間。
序號(hào) | 屬性 | 值 |
---|---|---|
0 | tm_year | 2008 |
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 | 是否為夏令時(shí),值有:1(夏令時(shí))、0(不是夏令時(shí))、-1(未知),默認(rèn) -1 |
3、獲取當(dāng)前時(shí)間
從返回的時(shí)間戳轉(zhuǎn)變?yōu)闀r(shí)間元組可以使用time
模塊的localtime()
函數(shù); time.gmtime([secs])
也返回一個(gè)時(shí)間元組
示例代碼:
import time time_stamp = time.time() # 獲取當(dāng)前時(shí)間戳 localtime = time.localtime(time_stamp) print(localtime) # time.struct_time(tm_year=2020, tm_mon=5, tm_mday=27, tm_hour=21, tm_min=36, tm_sec=42, tm_wday=2, tm_yday=148, tm_isdst=0)
4、格式化時(shí)間
可以使用time
模塊的asctime
函數(shù)將時(shí)間元組格式化為最簡(jiǎn)單的可讀模式,不給參數(shù)的話表示當(dāng)前時(shí)間
time.ctime([secs])
此參數(shù)接受時(shí)間戳為單位,返回日期的可讀模式,不給參數(shù)相當(dāng)于time.asctime()
示例代碼:
import time time_stamp = time.time() localtime = time.asctime(time.localtime(time_stamp)) print("當(dāng)前時(shí)間為:", localtime) # 當(dāng)前時(shí)間為: Wed May 27 21:47:48 2020
5、格式化日期
Python中的日期格式化符號(hào):
符號(hào) | 描述 |
---|---|
%y | 兩位數(shù)的表示年份(00-99) |
%Y | 四位數(shù)的表示年份(0000-9999) |
%m | 月份(01-12) |
%d | 月內(nèi)中的某一天(1-31) |
%H | 24小時(shí)制小時(shí)數(shù)(0-23) |
%I | 12小時(shí)制小時(shí)數(shù)(01-12) |
%M | 分鐘數(shù)(00=59) |
%S | 秒(00-59) |
%a | 本地簡(jiǎn)化星期名稱(chēng) |
%A | 本地完整星期名稱(chēng) |
%b | 本地簡(jiǎn)化的月份名稱(chēng) |
%B | 本地完整的月份名稱(chēng) |
%c | 本地相應(yīng)的日期表示和時(shí)間表示 |
%j | 年內(nèi)的一天(001-366) |
%p | 本地A.M.或P.M.的等價(jià)符 |
%U | 一年中的星期數(shù)(00-53)星期天為星期的開(kāi)始 |
%w | 星期(0-6),星期天為星期的開(kāi)始 |
%W | 一年中的星期數(shù)(00-53)星期一為星期的開(kāi)始 |
%x | 本地相應(yīng)的日期表示 |
%X | 本地相應(yīng)的時(shí)間表示 |
%Z | 當(dāng)前時(shí)區(qū)的名稱(chēng) |
%% | %號(hào)本身 |
time mktime
(結(jié)構(gòu)化的時(shí)間或者完整的9位元組元素) 函數(shù)執(zhí)行與gmtime()
, localtime()
相反的操作,它接收struct_time
對(duì)象作為參數(shù),返回用秒數(shù)來(lái)表示時(shí)間的浮點(diǎn)數(shù)。如果輸入的值不是一個(gè)合法的時(shí)間,將觸發(fā) OverflowError 或 ValueError
。示例代碼:
import time time_stamp = time.time() print(time_stamp) # 1590590683.0062041 # 4位數(shù)的年份-月份-天數(shù) 24小時(shí)制:分鐘:秒 周幾 今年的第幾天 localtime = time.strftime("%Y-%m-%d %H:%M:%S %A %j", time.localtime(time_stamp)) print(localtime) # 2020-05-27 22:44:43 Wednesday 148 # 轉(zhuǎn)變?yōu)闀r(shí)間元組 localtime_tuple = time.strptime(localtime, "%Y-%m-%d %H:%M:%S %A %j") print(localtime_tuple) # time.struct_time(tm_year=2020, tm_mon=5, tm_mday=27, tm_hour=22, tm_min=44, tm_sec=43, tm_wday=2, tm_yday=148, tm_isdst=-1) # 將時(shí)間元組轉(zhuǎn)換為秒(時(shí)間戳) time_stamp = time.mktime(localtime_tuple) print(time_stamp) # 1590590683.0 # 與一開(kāi)始獲取的基本相等
6、獲取CPU時(shí)間
time.perf_counter()
返回計(jì)時(shí)器的精準(zhǔn)時(shí)間(系統(tǒng)的運(yùn)行時(shí)間),包含整個(gè)系統(tǒng)的睡眠時(shí)間。由于返回值的基準(zhǔn)點(diǎn)是未定義的,所以,只有連續(xù)調(diào)用的結(jié)果之間的差才是有效的。
time.process_time()
返回當(dāng)前進(jìn)程執(zhí)行 CPU
的時(shí)間總和,不包含睡眠時(shí)間。由于返回值的基準(zhǔn)點(diǎn)是未定義的,所以,只有連續(xù)調(diào)用的結(jié)果之間的差才是有效的。
time.sleep()
函數(shù)推遲調(diào)用線程的運(yùn)行,可通過(guò)參數(shù)secs
指秒數(shù),表示進(jìn)程掛起的時(shí)間。
示例代碼:
import time # 獲取系統(tǒng)運(yùn)行該函數(shù)的時(shí)間 print(time.perf_counter()) # 0.0208446 time.sleep(2) # 讀取系統(tǒng)運(yùn)行該函數(shù)的時(shí)間, print(time.perf_counter()) # 2.0208952 # 兩者的差距微乎其微 # 獲取當(dāng)前進(jìn)程執(zhí)行 CPU 的時(shí)間總和 print(time.process_time()) # 0.015625 # 不包含睡眠時(shí)間
7、日歷模塊
Calendar
日歷模塊,此模塊中的函數(shù)都是日歷相關(guān)的,例如打印某月的字符月歷
函數(shù) | 描述 |
---|---|
calendar.calendar(year,w=2,l=1,c=6) | 返回一個(gè)多行字符串格式的year年年歷,3個(gè)月一行,間隔距離為c。 每日寬度間隔為w字符。每行長(zhǎng)度為21* W+18+2* C。l是每星期行數(shù)。 |
calendar.month(year,month,w=2,l=1) | 返回一個(gè)多行字符串格式的year年month月日歷,兩行標(biāo)題,一周一行。每日寬度間隔為w字符。每行的長(zhǎng)度為7* w+6。l是每星期的行數(shù)。 |
calendar.monthrange(year,month) | 返回兩個(gè)整數(shù)。第一個(gè)是該月的星期幾,第二個(gè)是該月有幾天。星期幾是從0(星期一)到 6(星期日)。 |
calendar.leapdays(y1,y2) | 返回在Y1,Y2兩年之間的閏年總數(shù)。 |
calendar.isleap(year) | 判斷是否為閏年,是閏年返回 True,否則為 false。 |
import calendar # 打印今年的年歷 print(calendar.calendar(2020)) # 打印本月的月歷 print(calendar.month(2020, 5)) # monthrange方法 print(calendar.monthrange(2020, 5)) # (4, 31) # 5月份的第一天是周五一共31天,因?yàn)橹芤皇?所以4是周五 # 計(jì)算1000年到2000年的閏年總數(shù) print(calendar.leapdays(1000, 2000)) # 242 # 判斷今年是否為閏年 print(calendar.isleap(2020)) # True
time.strftime(fmt[,tupletime])
接收以時(shí)間元組,并返回以可讀字符串表示的當(dāng)?shù)貢r(shí)間,格式由fmt決定。
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')
根據(jù)fmt
的格式把一個(gè)時(shí)間字符串解析為時(shí)間元組。
到此這篇關(guān)于Python
中的time
模塊和calendar
模塊的文章就介紹到這了,更多相關(guān)Python time
模塊和calendar
模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?Traceback(most?recent?call?last)報(bào)錯(cuò)信息:示例解讀
這篇文章主要介紹了Python?Traceback(most?recent?call?last)報(bào)錯(cuò)信息:示例解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12opencv3/python 鼠標(biāo)響應(yīng)操作詳解
今天小編就為大家分享一篇opencv3/python 鼠標(biāo)響應(yīng)操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Python遞歸及尾遞歸優(yōu)化操作實(shí)例分析
這篇文章主要介紹了Python遞歸及尾遞歸優(yōu)化操作,結(jié)合實(shí)例形式分析了Python遞歸及尾遞歸優(yōu)化相關(guān)概念、原理、應(yīng)用與操作技巧,需要的朋友可以參考下2020-02-02python中import reload __import__的區(qū)別詳解
這篇文章主要介紹了python中import reload __import__的區(qū)別詳解,需要的朋友可以參考下2017-10-10利用python進(jìn)行接口測(cè)試及類(lèi)型介紹
這篇文章主要介紹了利用python進(jìn)行接口測(cè)試詳情,文章基于python展開(kāi)對(duì)接口測(cè)試的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05python數(shù)據(jù)可視化JupyterLab實(shí)用擴(kuò)展程序Mito
這篇文章主要為大家介紹了python數(shù)據(jù)可視化JupyterLab實(shí)用擴(kuò)展程序Mito的功能應(yīng)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11python 實(shí)現(xiàn)分組求和與分組累加求和代碼
這篇文章主要介紹了python 實(shí)現(xiàn)分組求和與分組累加求和代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05