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

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

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

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

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

一、為什么選擇 Pendulum

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

from datetime import datetime, timedelta, timezone

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

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

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

import pendulum

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

是不是清晰不少?

二、安裝 Pendulum

Pendulum 可以通過 pip 快速安裝:

pip install pendulum

安裝完成后,導(dǎo)入方式非常簡單:

import pendulum

三、核心功能與語法解析

3.1 獲取當(dāng)前時間

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ū)字符串,無需手動構(gòu)造 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)

甚至可以鏈?zhǔn)秸{(diào)用:

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 格式化與字符串轉(zhuǎn)換

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

你也可以對時間進(jìn)行差值計算:

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

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

處理時間段是數(shù)據(jù)分析、報表等任務(wù)的常見需求。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))  # 判斷某個時間是否在范圍內(nèi)

五、與 datetime 的兼容性

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

from datetime import datetime
import pendulum

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

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

六、典型應(yīng)用場景

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

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 自動任務(wù)觸發(fā)器

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

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ū)???(強(qiáng))
人性化輸出???(更好)
日期范圍處理???
國際化支持???(多語言)
與原生兼容性???
安裝包體積

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

八、總結(jié)

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

推薦理由總結(jié):

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

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

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

相關(guān)文章

  • python爬蟲獲取淘寶天貓商品詳細(xì)參數(shù)

    python爬蟲獲取淘寶天貓商品詳細(xì)參數(shù)

    這篇文章主要為大家詳細(xì)介紹了python爬蟲獲取淘寶天貓商品詳細(xì)參數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • web.py在模板中輸出美元符號的方法

    web.py在模板中輸出美元符號的方法

    這篇文章主要介紹了web.py在模板中輸出美元符號的方法,即在web.py的模板中輸出$符號的方法,需要的朋友可以參考下
    2014-08-08
  • python基于Node2Vec實現(xiàn)節(jié)點分類及其可視化示例詳解

    python基于Node2Vec實現(xiàn)節(jié)點分類及其可視化示例詳解

    這篇文章主要為大家介紹了python基于Node2Vec實現(xiàn)節(jié)點分類及其可視化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • APPium+Python編寫真機(jī)移動端自動化腳本的項目實踐

    APPium+Python編寫真機(jī)移動端自動化腳本的項目實踐

    本文主要介紹了APPium+Python編寫真機(jī)移動端自動化腳本的項目實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 關(guān)于Python去除字符串中空格的方法總結(jié)

    關(guān)于Python去除字符串中空格的方法總結(jié)

    用Python處理字符串時會經(jīng)常要去掉字符串首、尾或者中間的空白,以得到我們想要的結(jié)果,下面這篇文章主要給大家介紹了關(guān)于Python去除字符串中空格的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • python操作 hbase 數(shù)據(jù)的方法

    python操作 hbase 數(shù)據(jù)的方法

    下面小編就為大家?guī)硪黄猵ython操作 hbase 數(shù)據(jù)的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • python熱力圖實現(xiàn)簡單方法

    python熱力圖實現(xiàn)簡單方法

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python熱力圖實現(xiàn)簡單方法,對此有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • Python命令行庫click的具體使用

    Python命令行庫click的具體使用

    本文主要介紹了Python命令行庫click的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python?Flask中Cookie和Session區(qū)別詳解

    Python?Flask中Cookie和Session區(qū)別詳解

    Flask是一個使用?Python?編寫的輕量級?Web?應(yīng)用框架。其?WSGI?工具箱采用?Werkzeug?,模板引擎則使用?Jinja2?。Flask使用?BSD?授權(quán)。Flask也被稱為?“microframework”?,因為它使用簡單的核心,用?extension?增加其他功能,F(xiàn)lask中Cookie和Session有什么區(qū)別呢
    2022-07-07
  • python操作toml文件的示例代碼

    python操作toml文件的示例代碼

    這篇文章主要介紹了python操作toml文件的示例代碼,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11

最新評論

瑞昌市| 邵阳县| 汕头市| 长治县| 娄烦县| 无为县| 新郑市| 天台县| 鄂伦春自治旗| 洪湖市| 广昌县| 渝中区| 吉林市| 横山县| 武宣县| 锦州市| 阳城县| 彭州市| 杨浦区| 台安县| 蕉岭县| 丰都县| 锦州市| 惠东县| 峨边| 宜阳县| 沛县| 辛集市| 宜章县| 精河县| 吉林省| 滨州市| 蓬莱市| 平昌县| 库尔勒市| 南宁市| 鹤壁市| 肇东市| 邯郸县| 盐城市| 苗栗市|