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

Python使用Pendulum優(yōu)雅處理日期與時間

 更新時間:2025年06月05日 09:26:39   作者:蕭鼎  
在日常開發(fā)中,日期和時間的處理一直是讓人頭疼的事情,本文將全面介紹?pendulum?的特點,用法以及典型應用場景,希望可以幫助大家在實際項目中優(yōu)雅地處理時間邏輯

在日常開發(fā)中,日期和時間的處理一直是讓人頭疼的事情。雖然 Python 內置的 datetime 模塊功能強大,但使用起來冗長、容易出錯,對時區(qū)支持也不夠友好。而 pendulum 正是為了解決這些痛點而生的現(xiàn)代化日期時間庫。

本文將全面介紹 pendulum 的特點、用法以及典型應用場景,并與 datetime 模塊進行對比,幫助你在實際項目中優(yōu)雅地處理時間邏輯。

一、為什么選擇 Pendulum

在你接觸 pendulum 之前,可能已經(jīng)習慣于這樣寫代碼:

from datetime import datetime, timedelta, timezone

now = datetime.now()
later = now + timedelta(days=3)

然而,如果你需要處理時區(qū)轉換、自然語言式時間表達、日期范圍、持續(xù)時間等需求時,datetime 的語法就顯得冗長而繁瑣。

而使用 pendulum,代碼變成這樣:

import pendulum

now = pendulum.now("Asia/Shanghai")
later = now.add(days=3)

是不是清晰不少?

二、安裝 Pendulum

Pendulum 可以通過 pip 快速安裝:

pip install pendulum

安裝完成后,導入方式非常簡單:

import pendulum

三、核心功能與語法解析

3.1 獲取當前時間

pendulum.now()                         # 使用本地時區(qū)
pendulum.now("UTC")                   # 使用指定時區(qū)
pendulum.today("Asia/Shanghai")       # 獲取今天0點
pendulum.yesterday("Asia/Shanghai")   # 獲取昨天
pendulum.tomorrow("Asia/Shanghai")    # 獲取明天

3.2 創(chuàng)建時間對象

dt = pendulum.datetime(2025, 6, 4, 15, 30, tz="Asia/Shanghai")

相比原生 datetime.datetime,pendulum.datetime 支持直接指定時區(qū)字符串,無需手動構造 timezone 對象。

還可以通過 from_format 快速解析:

dt = pendulum.from_format("2025-06-04 15:30", "YYYY-MM-DD HH:mm", tz="Asia/Shanghai")

3.3 自然語言解析時間

pendulum.parse("2025-06-04T15:30:00+08:00")
pendulum.parse("2025-06-04 15:30:00", tz="Asia/Shanghai")

3.4 時間加減(Duration)

now = pendulum.now()
three_days_later = now.add(days=3)
one_week_ago = now.subtract(weeks=1)

甚至可以鏈式調用:

now.add(days=1).subtract(hours=2)

3.5 時間比較

dt1 = pendulum.datetime(2025, 6, 1)
dt2 = pendulum.datetime(2025, 6, 4)

print(dt1 < dt2)               # True
print(dt1.diff(dt2).in_days())  # 3

支持 .is_before()、.is_after()、.is_same_day() 等方法。

3.6 時區(qū)處理

dt = pendulum.datetime(2025, 6, 4, 15, 30, tz="UTC")
local_dt = dt.in_timezone("Asia/Shanghai")

還可以輕松獲取所有時區(qū):

pendulum.timezones  # 返回所有支持的時區(qū)列表

3.7 格式化與字符串轉換

now = pendulum.now()
print(now.to_datetime_string())       # "2025-06-04 15:30:00"
print(now.format("YYYY-MM-DD HH:mm"))  # "2025-06-04 15:30"

支持使用 moment.js 的格式化語法,非常自然。

3.8 持續(xù)時間(Durations)

duration = pendulum.duration(days=2, hours=5, minutes=30)
print(duration.total_minutes())  # 2*24*60 + 5*60 + 30 = 3090

你也可以對時間進行差值計算:

start = pendulum.datetime(2025, 6, 1)
end = pendulum.datetime(2025, 6, 4)
diff = end - start
print(diff.in_days())  # 3

四、日期區(qū)間與范圍處理

處理時間段是數(shù)據(jù)分析、報表等任務的常見需求。pendulum 提供 period 和 intervals 工具:

start = pendulum.datetime(2025, 6, 1)
end = pendulum.datetime(2025, 6, 10)
period = pendulum.period(start, end)

for dt in period.range("days"):
    print(dt.to_date_string())

還可以使用:

period.days         # 獲取所有日期組成的列表
period.includes(pendulum.datetime(2025, 6, 4))  # 判斷某個時間是否在范圍內

五、與 datetime 的兼容性

pendulum 是 datetime 的完全替代品,它繼承了 datetime.datetime,并向下兼容所有用法。

from datetime import datetime
import pendulum

dt = pendulum.now()
isinstance(dt, datetime)  # True

這意味著你可以在現(xiàn)有項目中逐步替換 datetime 為 pendulum,無需大改動。

六、典型應用場景

6.1 多時區(qū)日程應用

event_time = pendulum.parse("2025-06-04 18:00", tz="America/New_York")
user_time = event_time.in_timezone("Asia/Shanghai")
print(user_time.format("YYYY-MM-DD HH:mm"))

6.2 自動任務觸發(fā)器

now = pendulum.now()
if now.is_weekday() and now.hour == 9:
    print("開始執(zhí)行每日工作任務")

6.3 數(shù)據(jù)報表日期范圍

start = pendulum.today().subtract(days=6)
end = pendulum.today()

for day in pendulum.period(start, end).range("days"):
    print(f"處理報表:{day.to_date_string()}")

6.4 人類可讀的時間間隔(humanize)

dt = pendulum.now().subtract(days=2, hours=3)
print(dt.diff_for_humans())  # “2 days ago”

支持中英文,適合用于日志、用戶提示信息等。

七、與其他時間庫對比

特性datetimearrowpendulum
原生支持時區(qū)???(強)
人性化輸出???(更好)
日期范圍處理???
國際化支持???(多語言)
與原生兼容性???
安裝包體積

pendulum 結合了 arrow 的易用性和 datetime 的兼容性,是目前處理時間的最佳選擇之一。

八、總結

pendulum 是一個現(xiàn)代化、直觀且功能豐富的 Python 時間處理庫。無論你是開發(fā)金融系統(tǒng)、定時任務調度、日志系統(tǒng),還是需要處理復雜的時間邏輯,pendulum 都能大大簡化你的代碼。

推薦理由總結:

  • API 更加直觀
  • 對時區(qū)支持優(yōu)秀
  • 支持日期范圍
  • 高度兼容 datetime
  • 支持人類可讀輸出
  • 性能優(yōu)于 arrow

如果你還在用 datetime 并苦于寫一堆格式轉換、手動處理時區(qū)和計算間隔,不妨從下一個項目開始試試 pendulum,相信你會愛上它。

到此這篇關于Python使用Pendulum優(yōu)雅處理日期與時間的文章就介紹到這了,更多相關Python Pendulum處理日期與時間內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python實現(xiàn)的一個p2p文件傳輸實例

    python實現(xiàn)的一個p2p文件傳輸實例

    這篇文章主要介紹了python實現(xiàn)的一個p2p文件傳輸實例,文中用來解決多臺服務器維護文件同步問題,需要的朋友可以參考下
    2014-06-06
  • Python中安裝庫的常用方法介紹

    Python中安裝庫的常用方法介紹

    大家好,本篇文章主要講的是Python中安裝庫的常用方法介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Python基于自然語言處理開發(fā)文本摘要系統(tǒng)

    Python基于自然語言處理開發(fā)文本摘要系統(tǒng)

    自然語言處理(NLP)是人工智能領域中一個重要的研究方向,而文本摘要作為NLP的一個重要應用,在信息爆炸的時代具有重要意義,下面我們來看看如何開發(fā)一個基于Python的文本摘要系統(tǒng)吧
    2025-04-04
  • pyqt5 獲取顯示器的分辨率的方法

    pyqt5 獲取顯示器的分辨率的方法

    今天小編就為大家分享一篇pyqt5 獲取顯示器的分辨率的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python 運行 shell 獲取輸出結果的實例

    Python 運行 shell 獲取輸出結果的實例

    今天小編就為大家分享一篇Python 運行 shell 獲取輸出結果的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python實現(xiàn)三維擬合的方法

    python實現(xiàn)三維擬合的方法

    今天小編就為大家分享一篇python實現(xiàn)三維擬合的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Pytorch實現(xiàn)將label變成one hot編碼的兩種方式

    Pytorch實現(xiàn)將label變成one hot編碼的兩種方式

    這篇文章主要介紹了Pytorch實現(xiàn)將label變成one hot編碼的兩種方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python實現(xiàn)美化版端口進程管理工具

    Python實現(xiàn)美化版端口進程管理工具

    這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)一個美化版的端口進程管理工具,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2025-03-03
  • Pycharm如何對python文件進行打包

    Pycharm如何對python文件進行打包

    這篇文章主要介紹了Pycharm如何對python文件進行打包,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python列表和元組的定義與使用操作示例

    Python列表和元組的定義與使用操作示例

    這篇文章主要介紹了Python列表和元組的定義與使用操作,結合實例形式分析了Python中列表和元組的功能、區(qū)別、定義及使用方法,需要的朋友可以參考下
    2017-07-07

最新評論