最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

最好的Python DateTime 庫之 Pendulum 長篇解析

 更新時(shí)間:2021年11月16日 11:27:58   作者:Python學(xué)習(xí)與數(shù)據(jù)挖掘  
datetime 模塊是 Python 中最重要的內(nèi)置模塊之一,它為實(shí)際編程問題提供許多開箱即用的解決方案,非常靈活和強(qiáng)大。例如,timedelta 是我最喜歡的工具之一

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

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

1.直接替換 datetime

在這里插入圖片描述

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

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

pip install pendulum

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

import pendulum as pdl

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

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

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

在這里插入圖片描述

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

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

在這里插入圖片描述

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

使用 Pendulum 庫,我們可以像這樣輕松地創(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)

在這里插入圖片描述

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

dt_melbourne.diff(dt_brisbane).in_hours()

在這里插入圖片描述

多么容易啊! 比較具有不同時(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)

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

Pendulum 允許我們使用如下常見的格式代碼

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

在這里插入圖片描述

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

在這里插入圖片描述

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

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

4. 字符串格式化

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

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

在這里插入圖片描述

然后,讓我從 Pendulum 中挑選幾個(gè)“to string”方法的例子,看看用開箱即用的格式輸出日期時(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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

5. 人類可讀性

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

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

在這里插入圖片描述

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

在這里插入圖片描述

內(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 中,再簡單不過了。

在這里插入圖片描述

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

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

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

使用 Pendulum,就這么簡單

在這里插入圖片描述

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

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

在這里插入圖片描述

7. 一些額外的便利

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

總結(jié)

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

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

技術(shù)交流

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

在這里插入圖片描述

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

相關(guān)文章

  • 用Python實(shí)現(xiàn)童年貪吃蛇小游戲功能的實(shí)例代碼

    用Python實(shí)現(xiàn)童年貪吃蛇小游戲功能的實(shí)例代碼

    這篇文章主要介紹了用Python實(shí)現(xiàn)童年貪吃蛇小游戲功能的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Python中range、np.arange和np.linspace的區(qū)別

    Python中range、np.arange和np.linspace的區(qū)別

    本文主要介紹了Python中range、np.arange和np.linspace的區(qū)別,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • python淺析守護(hù)線程與非守護(hù)線程的區(qū)別與使用

    python淺析守護(hù)線程與非守護(hù)線程的區(qū)別與使用

    守護(hù)線程,又稱后臺(tái)線程,它是在后臺(tái)運(yùn)行的,如果所有前臺(tái)線程都死亡,那么后臺(tái)線程就會(huì)自動(dòng)死亡,本章我們來了解守護(hù)線程與非守護(hù)線程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-08-08
  • 推薦技術(shù)人員一款Python開源庫(造數(shù)據(jù)神器)

    推薦技術(shù)人員一款Python開源庫(造數(shù)據(jù)神器)

    今天小編給大家推薦一款Python開源庫,技術(shù)人必備的造數(shù)據(jù)神器!非常不錯(cuò),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-07-07
  • 利用Python matplotlib繪制風(fēng)能玫瑰圖

    利用Python matplotlib繪制風(fēng)能玫瑰圖

    這篇文章主要給大家介紹了關(guān)于如何利用Python matplotlib繪制風(fēng)能玫瑰圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 超詳細(xì),教你用python語言實(shí)現(xiàn)QQ機(jī)器人制作教程

    超詳細(xì),教你用python語言實(shí)現(xiàn)QQ機(jī)器人制作教程

    這篇文章主要介紹了如何python語言實(shí)現(xiàn)QQ機(jī)器人,用圖文詳細(xì)的描述了其中的操作步驟,非常的簡單易上手,有需要的朋友可以參考下
    2021-08-08
  • 一篇文章教你用Python實(shí)現(xiàn)一鍵文件重命名

    一篇文章教你用Python實(shí)現(xiàn)一鍵文件重命名

    這篇文章主要介紹了如何用python一鍵文件重命名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • python實(shí)現(xiàn)自動(dòng)發(fā)送郵件發(fā)送多人、群發(fā)、多附件的示例

    python實(shí)現(xiàn)自動(dòng)發(fā)送郵件發(fā)送多人、群發(fā)、多附件的示例

    下面小編就為大家分享一篇python實(shí)現(xiàn)自動(dòng)發(fā)送郵件發(fā)送多人、群發(fā)、多附件的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • python 中的@運(yùn)算符使用

    python 中的@運(yùn)算符使用

    這篇文章主要介紹了python 中的@運(yùn)算符使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python命令行傳遞參數(shù)的兩種方式

    python命令行傳遞參數(shù)的兩種方式

    python在命令行運(yùn)行.py文件時(shí),如何在命令行傳遞參數(shù)給運(yùn)行程序,python默認(rèn)提供了sys模塊的系統(tǒng)參數(shù)屬性實(shí)現(xiàn)接收命令行中的外部參數(shù),本文給大家介紹了python命令行傳遞參數(shù)的兩種方式,需要的朋友可以參考下
    2024-05-05

最新評(píng)論

济南市| 兴安县| 勐海县| 宜丰县| 桂林市| 西林县| 屯留县| 杂多县| 攀枝花市| 津南区| 石河子市| 焦作市| 绵竹市| 鹤庆县| 醴陵市| 合山市| 潍坊市| 齐齐哈尔市| 渝中区| 江永县| 德惠市| 滦南县| 福泉市| 北碚区| 颍上县| 平定县| 雷州市| 崇文区| 吉安市| 沁水县| 宁乡县| 丰原市| 杨浦区| 自贡市| 河津市| 即墨市| 百色市| 阿克陶县| 赤水市| 黔东| 虹口区|