欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(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í),我們不得不引入一些第三方庫(kù)作為補(bǔ)充。 此外,datetime 模塊中的某些方面在其他編程語(yǔ)言中不很直觀或不常用。

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

1.直接替換 datetime

在這里插入圖片描述

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

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

pip install pendulum

該庫(kù)的名稱有點(diǎn)長(zhǎng),因此我建議使用別名導(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 庫(kù)最令人印象深刻的功能是時(shí)區(qū), 這也是內(nèi)置 datetime 模塊的關(guā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)

在這里插入圖片描述

在上面的例子中,我們同時(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ù)其他編程語(yǔ)言相比,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。 如果我們希望庫(kù)依賴于 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 中,再簡(jiǎn)單不過了。

在這里插入圖片描述

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

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

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

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

在這里插入圖片描述

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

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

在這里插入圖片描述

7. 一些額外的便利

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

總結(jié)

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

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

技術(shù)交流

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

在這里插入圖片描述

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

相關(guān)文章

  • python如何將多個(gè)PDF進(jìn)行合并

    python如何將多個(gè)PDF進(jìn)行合并

    這篇文章主要為大家詳細(xì)介紹了python如何將多個(gè)PDF進(jìn)行合并,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Python爬蟲請(qǐng)求模塊Urllib及Requests庫(kù)安裝使用教程

    Python爬蟲請(qǐng)求模塊Urllib及Requests庫(kù)安裝使用教程

    requests和urllib都是Python中常用的HTTP請(qǐng)求庫(kù),使用時(shí)需要根據(jù)實(shí)際情況選擇,如果要求使用簡(jiǎn)單、功能完善、性能高的HTTP請(qǐng)求庫(kù),可以選擇requests,如果需要兼容性更好、功能更加靈活的HTTP請(qǐng)求庫(kù),可以選擇urllib
    2023-11-11
  • python解析.pyd文件的詳細(xì)代碼

    python解析.pyd文件的詳細(xì)代碼

    這篇文章介紹了python解析.pyd文件的詳細(xì)代碼,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考
    2021-12-12
  • Python 逐行分割大txt文件的方法

    Python 逐行分割大txt文件的方法

    本文通過代碼給大家介紹了Python 逐行分割大txt文件的方法,在文中給大家提到了Python從txt文件中逐行讀取數(shù)據(jù)的方法,需要的朋友參考下吧
    2017-10-10
  • Python如何獲取多線程返回結(jié)果

    Python如何獲取多線程返回結(jié)果

    這篇文章主要介紹了Python如何獲取多線程返回結(jié)果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • opencv?canny邊緣檢測(cè)算法詳解

    opencv?canny邊緣檢測(cè)算法詳解

    本文主要介紹了opencv?canny邊緣檢測(cè)算法詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • tkinter動(dòng)態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法

    tkinter動(dòng)態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法

    這篇文章主要介紹了tkinter動(dòng)態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 詳解python中asyncio模塊

    詳解python中asyncio模塊

    本篇文章給大家詳細(xì)分析了python中重要的asyncio模塊相關(guān)知識(shí)點(diǎn),有興趣的朋友可以學(xué)習(xí)參考下。
    2018-03-03
  • 利用Python代碼實(shí)現(xiàn)一鍵摳背景功能

    利用Python代碼實(shí)現(xiàn)一鍵摳背景功能

    這篇文章主要給大家介紹了關(guān)于如何利用Python代碼實(shí)現(xiàn)一鍵摳背景的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 解決pytorch讀取自制數(shù)據(jù)集出現(xiàn)過的問題

    解決pytorch讀取自制數(shù)據(jù)集出現(xiàn)過的問題

    這篇文章主要介紹了解決pytorch讀取自制數(shù)據(jù)集出現(xiàn)過的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05

最新評(píng)論