一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類(lèi)導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

2022-03-02 00:07Python學(xué)習(xí)與數(shù)據(jù)挖掘 Python

datetime 模塊是 Python 中最重要的內(nèi)置模塊之一,它為實(shí)際編程問(wèn)題提供許多開(kāi)箱即用的解決方案,非常靈活和強(qiáng)大。例如,timedelta 是我最喜歡的工具之一

不過(guò)不得不說(shuō),datetime模塊也有一些限制。 例如,當(dāng)我們處理時(shí)區(qū)時(shí),通常會(huì)顯得短缺。有時(shí),我們不得不引入一些第三方庫(kù)作為補(bǔ)充。 此外,datetime 模塊中的某些方面在其他編程語(yǔ)言中不很直觀或不常用。

在本文中,我將介紹一個(gè)名為 Pendulum 的第三方庫(kù),它將解決內(nèi)置 datetime 模塊的所有問(wèn)題,歡迎收藏學(xué)習(xí),喜歡點(diǎn)贊支持,文末提供技術(shù)交流群。

 

1.直接替換 datetime

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

使用 pytz 等第三方庫(kù)來(lái)解決一些 Python datetime不擅長(zhǎng)的問(wèn)題并不少見(jiàn)。但是,我們?nèi)匀恍枰獙?dǎo)入 datetime 模塊并將其用作必不可少的,因?yàn)槲覀冃枰褂盟鼇?lái)實(shí)例化 datetime 對(duì)象。

讓我向你展示為什么 Pendulum 是一種替代品。 首先,我們需要使用pip安裝它。

pip install pendulum

該庫(kù)的名稱(chēng)有點(diǎn)長(zhǎng),因此我建議使用別名導(dǎo)入它

import pendulum as pdl

雖然 pd 是一個(gè)較短的縮寫(xiě),但我會(huì)為 Pandas 保留它。不想制造任何混亂。

讓我們使用 Pendulum 創(chuàng)建一個(gè) datetime 對(duì)象,并看看它的對(duì)象類(lèi)型。

from datetime import datetime
dt = pdl.datetime(2021, 11, 6)
isinstance(dt, datetime)

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

Pendulum 繼承了 Python datetime 對(duì)象。 因此,我們無(wú)需擔(dān)心使用 datetime 模塊中的一些原始功能。 從字面上看,Pendulum datetime 對(duì)象是 Python datetime 對(duì)象。

 

2. 時(shí)區(qū)

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

Pendulum 庫(kù)最令人印象深刻的功能是時(shí)區(qū), 這也是內(nèi)置 datetime 模塊的關(guān)鍵問(wèn)題之一。 在 Python 3.9 之前,如果我們想使用 IANA 時(shí)區(qū),我們必須涉及 pytz。

使用 Pendulum 庫(kù),我們可以像這樣輕松地創(chuàng)建一個(gè)帶有時(shí)區(qū)的日期時(shí)間對(duì)象。

dt_melbourne = pdl.datetime(2021, 11, 6, tz='Australia/Melbourne')
dt_brisbane = pdl.datetime(2021, 11, 6, tz='Australia/Queensland')
print(dt_melbourne)
print(dt_brisbane)

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

在上面的例子中,我們同時(shí)創(chuàng)建了兩個(gè)對(duì)象。 但是,時(shí)區(qū)是不同的。 Pendulum 還允許我們輕松比較時(shí)間。

dt_melbourne.diff(dt_brisbane).in_hours()

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

多么容易啊! 比較具有不同時(shí)區(qū)的兩個(gè)日期時(shí)間對(duì)象并獲得確切結(jié)果!

如果我們需要定義多個(gè) datetime 對(duì)象并希望重新使用 timezone 字符串,我們可以創(chuàng)建一個(gè) timezone 對(duì)象并將其傳遞給 datetime 構(gòu)造函數(shù)。

my_timezone = pdl.timezone('Australia/Melbourne')
dt_melbourne = pdl.datetime(2021, 11, 6, tz=my_timezone)
print(dt_melbourne)
print(dt_melbourne.timezone.name)

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

另一個(gè)很酷的功能是將時(shí)間返回到不同的時(shí)區(qū)。 例如,墨爾本是午夜,那么布里斯班是幾點(diǎn)?

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

 

3. 日期時(shí)間解析

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

解析日期時(shí)間可能是編程中最常見(jiàn)的用例,Python datetime 模塊做得很好。 但是與大多數(shù)其他編程語(yǔ)言相比,Python 使用了不同的格式 %Y%m%d。

Pendulum 允許我們使用如下常見(jiàn)的格式代碼

pdl.from_format('2021-11-06 22:00:00', 'YYYY-MM-DD HH:mm:ss')

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

此外,它完全支持 RFC 3339 和 ISO 8601 格式,以及其他一些常見(jiàn)格式。 這意味著我們不必指定格式代碼來(lái)將字符串解析為日期時(shí)間。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

Pendulum 還集成了許多常見(jiàn)的日期時(shí)間擴(kuò)展,例如 dateutil。 如果我們希望庫(kù)依賴于 dateutil 解析器,我們可以傳遞標(biāo)志 strict=False。

pdl.parse('21-11-06', strict=False)

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

除此之外,Pendulum 即時(shí)支持更多格式。 例如,只有數(shù)字的日期時(shí)間。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

這個(gè)很有趣,指定年份、周數(shù)和那一周的日期,Pendulum 給你正確的日期時(shí)間。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

如果我們特別想要一個(gè)日期對(duì)象或一個(gè)時(shí)間對(duì)象,只需指定exact=True,這比Python datetime 模塊容易得多。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

 

4. 字符串格式化

將字符串解析為日期時(shí)間對(duì)象后,下一件重要的事情就是將日期時(shí)間輸出為具有格式的字符串。

首先,讓我們有一個(gè) datetime 對(duì)象。 由于 Pendulum 繼承了 Python datetime,我們可以使用 now() 等所有方法。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

然后,讓我從 Pendulum 中挑選幾個(gè)“to string”方法的例子,看看用開(kāi)箱即用的格式輸出日期時(shí)間是多么容易。

dt.to_date_string()  # with date only
dt.to_time_string()  # with time only
dt.to_formatted_date_string()  # month_abbr date, year
dt.to_day_datetime_string() # day, month_abbr date, year hh:mm am/pm
dt.to_iso8601_string()  # to ISO 9601 standard
dt.to_atom_string()  # to Atom format
dt.to_cookie_string()  # to cookie style format

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

當(dāng)然,我們可以使用格式碼來(lái)自定義輸出字符串,格式更直觀。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

另一個(gè)很酷的東西是我們可以輕松地將一些不相關(guān)的字符串添加到格式字符串中,并讓它們脫離格式。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

 

5. 人類(lèi)可讀性

在內(nèi)置的 Python datetime 模塊中,timedelta 工具可以很好地完成比較工作。 然而,Pendulum 甚至可以通過(guò)在比較兩個(gè)日期時(shí)間對(duì)象時(shí)提供一些更人性化的輸出來(lái)改進(jìn)它。

例如,diff_for_humans() 方法將日期時(shí)間對(duì)象與當(dāng)前時(shí)間進(jìn)行比較,并返回一個(gè)非常人性化的輸出。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

 

6. 查找相對(duì)日期時(shí)間

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

內(nèi)置 Python 日期時(shí)間可以改進(jìn)的方面之一是根據(jù)給定的日期時(shí)間查找相對(duì)日期時(shí)間。 例如,當(dāng)我們要查找當(dāng)月的最后一天時(shí),我們必須使用 datetutil 模塊中的 relativedelta。

from dateutil.relativedelta import relativedelta
datetime.datetime(2013, 2, 21) + relativedelta(day=31)

此外,代碼不是很可讀,因?yàn)槲覀兪褂?day=31 作為參數(shù),盡管當(dāng)月份少于 31 天時(shí)它會(huì)起作用。

在 Pendulum 中,再簡(jiǎn)單不過(guò)了。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

內(nèi)置 datetime 模塊的另一個(gè)不便之處是查找一周中的某一天。 例如,如果我們要查找下周一的日期,這可能是最簡(jiǎn)單的方法。

from datetime import datetime, timedelta
datetime.now() + timedelta(days=(0-datetime.now().weekday()+7)%7)

它可以完成這項(xiàng)工作,但可讀性差。 開(kāi)發(fā)人員需要花一些時(shí)間來(lái)理解這行代碼的邏輯是什么。

使用 Pendulum,就這么簡(jiǎn)單

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

我們甚至不用考慮用 0 還是 1 來(lái)表示星期一,因?yàn)?Pendulum 使用枚舉來(lái)表示星期一。

同樣,我們可以使用 previous() 方法來(lái)查找上一個(gè)星期二,如下所示。 此外,我們可以通過(guò)設(shè)置參數(shù) keep_time=True 來(lái)保留時(shí)間部分。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

 

7. 一些額外的便利

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

這個(gè)庫(kù)中隱藏著更多的“秘密”。 再舉幾個(gè)例子,比如昨天或明天。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

輸出具有不同文化和語(yǔ)言區(qū)域設(shè)置的日期時(shí)間也很容易。

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

再舉一個(gè)例子。 如果一個(gè)人出生于 1988 年 1 月 1 日,那么這個(gè)人的年齡是多少?

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

 

總結(jié)

在本文中,我介紹了Python 第三方庫(kù) Pendulum,它是 Python 內(nèi)置 datetime 模塊的直接替代品。 通過(guò)使用這個(gè)庫(kù),datetime 模塊可以解決的許多問(wèn)題,例如查找相對(duì)日期,現(xiàn)在都可以輕松解決。

更重要的是,Pendulum 提供了整潔干凈的 API 來(lái)提高我們代碼的可讀性,并且這些解決方案更加直觀。

 

技術(shù)交流

歡迎轉(zhuǎn)載、收藏、有所收獲點(diǎn)贊支持一下!

最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析

到此這篇關(guān)于最好的Python DateTime 庫(kù)之 Pendulum 長(zhǎng)篇解析的文章就介紹到這了,更多相關(guān)Python Pendulum內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/weixin_38037405/article/details/121301090

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 白鹿扒开内裤露出尿孔 | 天堂va亚洲va欧美va国产 | 欧美成人tv在线观看免费 | 久九九精品免费视频 | 香蕉tv国产在线永久播放 | 亚洲狼人香蕉香蕉在线28 | 亚洲国产高清一区二区三区 | 日本大片在线 | 四缺一小说 | 8插8插 | 亚洲青草视频 | 激情小视频网站 | 精品在线91 | 天天av天天翘天天综合网 | 媳妇和公公小说 | 国产98在线| 俄罗斯烧性春三级k8播放 | 日本最大的黄色网站 | 国产欧美一区视频在线观看 | 男人资源站 | 精品一区二区三区视频 | 日韩精品欧美高清区 | 桥本有菜作品在线 | 纲手被comic天堂 | 成人久久伊人精品伊人 | 欧美三级不卡在线观线看高清 | 羞羞漫画视频 | 男人猛进猛出女人下面视频 | 亚洲精品一区二区久久这里 | 香蕉国产人午夜视频在线 | 午夜福利自怕 | 亚洲天堂男人的天堂 | 秋霞色| 草草草草视频 | 小鸟酱视频在线观看 | 亚洲激情综合 | 日本春菜花在线中文字幕 | 男人疯狂擦进女人下面 | 国产亚洲女在线线精品 | 国产成人亚洲精品一区二区在线看 | 亚洲天堂视频在线观看免费 |