Python基本知識之datetime模塊詳解
前言
time模塊用于取得UNIX紀(jì)元時間戳,并加以處理。但是,如果以方便的格式顯示日期,或?qū)θ掌谶M(jìn)行算數(shù)運(yùn)算,就應(yīng)該使用datetime模塊。
1. datetime數(shù)據(jù)類型
1) datetime.datetime.now()表示特定時刻
datetime模塊有自己的datetime數(shù)據(jù)類型。datetime值表示一個特定的時刻,如下示例代碼:
調(diào)用datetime.datetime.now()返回一個datetime對象,表示當(dāng)前的日期和時間,根據(jù)當(dāng)前計算機(jī)的時鐘。這個對象包含當(dāng)前時刻的年、月、日、時、分、秒和微秒。
也可以利用datetime.datetime()函數(shù),向它傳入代表年、月、日、時、分、秒的整數(shù),得到特定時刻的datetime對象。這些整數(shù)將保存在datetime對象的year、month、day、hour、minute和second屬性中。
2)datetime.datetime.fromtimestamp()轉(zhuǎn)換時間戳
UNIX紀(jì)元時間戳可以通過datetime.datetime.fromtimestamp(),轉(zhuǎn)換為datetime對象。
datetime對象的日期和時間將根據(jù)本地時區(qū)轉(zhuǎn)換,如下示例代碼:
由此可看出表達(dá)式datetime.datetime.now()和datetime.datetime.fromtimestamp(time.time())做的事情相同,都是返回當(dāng)前時刻的datetime對象。
3)用于比較操作符
datetime對象可以用比較操作符進(jìn)行比較,弄清楚誰在前面。后面的datetime對象是“更大”的值,如下:
2. timedelta數(shù)據(jù)類型
1)timedelta數(shù)據(jù)類型表示一段時間
datetime模塊還提供了timedelta數(shù)據(jù)類型,表示一段時間,而不是一個時刻:
- 用datetime.timedelta()函數(shù)創(chuàng)建timedelta對象,此函數(shù)接收關(guān)鍵字參數(shù)weeks、days、hours、minutes、seconds、milliseconds和microseconds,這些關(guān)鍵字參數(shù)都是可選的。沒有month和year關(guān)鍵字參數(shù),因?yàn)?ldquo;月”和“年”是可變的時間,依賴于特定月份或年份。
- timedelta對象擁有的總時間以天、秒、微妙來表示,這些數(shù)字分別保存在days、seconds和microseconds屬性中。
- total_seconds()方法用于timedelta對象,返回timedelta對象表示的秒數(shù)。
- 將一個timedelta對象傳入str(),將返回格式良好的、人類可讀的字符串。
2)進(jìn)行日期運(yùn)算
算數(shù)運(yùn)算符可以用于對datetime值進(jìn)行日期運(yùn)算。例如,要計算今天之后1000天的日期:
如代碼所示,Python將完成日期運(yùn)算,弄清楚當(dāng)前日期之后的1000天。這很有用,我們不用記住每個月有多少天、閏年的因素和其他棘手的細(xì)節(jié),datetime模塊會處理所有這些問題。
利用 + 和 - 運(yùn)算符,timedelta對象與datetime對象或其他timedelta對象相加或相減。
利用 * 和 / 運(yùn)算符,timedelta對象可以乘以或除以整數(shù)或浮點(diǎn)數(shù)。示例如下:
3. 將datetime對象轉(zhuǎn)換為字符串 —— strftime()方法
UNIX紀(jì)元時間戳和datetime對象對人類來說都不是很友好可讀。利用strftime()方法,可以將datetime對象顯示為字符串。( strftime()函數(shù)命中的 f 表示格式,format)。
strftime()方法使用的指令類似于Python的字符串格式化。下表列出了完整的strftime()指令:
strftime()指令 | |
strftime指令 | 含義 |
%Y | 帶世紀(jì)的年份,例如'2014' |
%y | 不帶世紀(jì)的年份,'00'至'99'(1970至2069) |
%m | 數(shù)字表示的月份,'01'至'12' |
%B | 完整的月份,例如'November' |
%b | 簡寫的月份,例如'Nov' |
%d | 一月中的第幾天,'01'至'31' |
%j | 一年中的第幾天,'001'至'366' |
%w | 一周中的第幾天,'0'(周日)至'6'(周六) |
%A | 完整的周幾,例如'Monday' |
%a | 簡寫的周幾,例如'Mon' |
%H | 小時(24小時時鐘),'00'至'23' |
%I | 小時(12小時時鐘),'01'至'12' |
%M | 分,'00'至'59' |
%S | 秒,'00'至'59' |
%p | 'AM'或'PM' |
%% | 就是'%'字符 |
向strftime()傳入一個定制的格式字符串,其中包含格式化指定(以及任何需要的斜線、冒號等),strftime()將返回一個格式化的字符串,表示datetime對象的信息。代碼如下:
strftime(format)方法返回一個字符串,用format字符串中的定制格式來表示datetime對象表示的時間。
需要注意的是:strftime() 不是以 datetime.datetime 開始。
4. 將字符串轉(zhuǎn)換成datetime對象 —— strptime()函數(shù)
如果有一個字符串的日期信息,如'2021/10/21 16:29:00'或'October 21, 2015', 需要轉(zhuǎn)換為datetime對象,就用 datetime.datetime.strptime()函數(shù)。
strptime()函數(shù)與strftime()方法相反,但定制的格式字符串使用相同的指令,見上表strftime()指令。必須將格式字符串傳入strptime(),這樣它就知道如何解析和理解日期字符串。
strptime()函數(shù)命中的 p 表示解析,parse。示例代碼如下:
strptime()需要傳入兩個參數(shù),第一個參數(shù)是需要轉(zhuǎn)換的字符串,第二個參數(shù)是第一個參數(shù)對應(yīng)的定制格式字符串。
datetime.datetime.strptime(time_string, format)函數(shù)返回一個datetime對象,它的時刻由time_string指定,利用format字符串參數(shù)來解析。
需要注意的是:帶有日期信息的字符串必須準(zhǔn)確匹配定制的格式字符串,否則Python將拋出ValueError異常。
總結(jié)
到此這篇關(guān)于Python基本知識之datetime模塊詳解的文章就介紹到這了,更多相關(guān)Python datetime模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何利用Python處理excel表格中的數(shù)據(jù)
Excel做為職場人最常用的辦公軟件,具有方便、快速、批量處理數(shù)據(jù)的特點(diǎn),下面這篇文章主要給大家介紹了關(guān)于如何利用Python處理excel表格中數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-03-03Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)字典相關(guān)計算問題示例
這篇文章主要介紹了Python字典相關(guān)計算問題,結(jié)合實(shí)例形式總結(jié)分析了Python字典相關(guān)的最小值、最大值、排序等操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-02-02Python時間差中seconds和total_seconds的區(qū)別詳解
今天小編就為大家分享一篇Python時間差中seconds和total_seconds的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12python寫一個隨機(jī)點(diǎn)名軟件的實(shí)例
今天小編就為大家分享一篇python寫一個隨機(jī)點(diǎn)名軟件的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11python html2text庫將HTML文檔轉(zhuǎn)換為純文本格式使用示例探索
這篇文章主要為大家介紹了python html2text庫將HTML文檔轉(zhuǎn)換為純文本格式使用示例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01