當前位置: 妍妍網 > 碼農

Python時間處理大師,讓你多活10年!

2024-05-24碼農

Pendulum是簡化了日期和時間操作的Python庫。它合並了 datetime time 的功能,提供了人性化的時間操作介面,同時支持時區處理,使得時間操作更加直觀和方便。

「安裝」

pip install pendulum

獲取當前時間

import pendulum
now = pendulum.now()
print(now) # 輸出當前時間,例如:2021-10-04T12:10:59+08:00

獲取昨天、今天和明天

yesterday = pendulum.yesterday()
today = pendulum.today()
tomorrow = pendulum.tomorrow()
print(yesterday) # 昨天的時間
print(today) # 今天的時間
print(tomorrow) # 明天的時間

計算時間差

diff_days = today.diff(yesterday).in_days()
diff_hours = today.diff(yesterday).in_hours()
print(diff_days) # 輸出相差天數,例如:1
print(diff_hours) # 輸出相差小時數,例如:24

建立時區特定的時間

dt1 = pendulum.datetime(2021103)
print(dt1.timezone.name) # 預設時區:UTC
dt2 = pendulum.datetime(2021103, tz='Asia/Shanghai')
print(dt2.timezone_name) # 指定時區:Asia/Shanghai

不同時區的時間比較和轉換

first = pendulum.datetime(2012952326110, tz='America/Toronto')
second = pendulum.datetime(2012952026110, tz='America/Vancouver')
print(first.timezone_name) # America/Toronto
print(second.timezone_name) # America/Vancouver
# 時區相差3小時,但時間點相同
print(first == second) # True
print(first.diff(second).in_hours()) # 3

時區切換

in_perk = pendulum.now("Asia/Shanghai")
print(in_perk.in_timezone("America/New_York"))

比較時間

first = pendulum.datetime(20121310)
second = pendulum.datetime(2012210)
print(first < second) # True

計算時間差

period = first.diff(second)
print(period) # Period物件,表示時間差

時間增減

dt = pendulum.datetime(2012131)
dt = dt.add(years=5)
print(dt) # '2017-01-31 00:00:00'

時間調整

計算起始和結束時間

dt = pendulum.datetime(20121311200)
print(dt.start_of('day')) # '2012-01-31 00:00:00'
print(dt.end_of('day')) # '2012-01-31 23:59:59'

獲取特定星期的日期

dt = pendulum.datetime(20121311200)
print(dt.next(pendulum.WEDNESDAY)) # 下一個星期三的日期

時間轉字串

格式化時間輸出

dt = pendulum.datetime(19751225141516)
print(dt.to_datetime_string()) # '1975-12-25 14:15:16'
print(dt.to_formatted_date_string()) # 'Dec 25, 1975'

解析字串為時間

dt = pendulum.parse('1975-05-21T22:00:00')
print(dt) # '1975-05-21T22:00:00+00:00'

人性化時間表示

顯示人性化時間差

print(pendulum.now().subtract(days=1).diff_for_humans()) # '1 day ago'

支持多語言

pendulum.set_locale('zh')
print(pendulum.now().subtract(days=1).diff_for_humans()) # '1天前'