Edited at

Pythonのdatetimeを簡単に使いたいならpendulum


なにをするか

pendulumの使い方を確認する

Official

GitHub


pendulumってなに

pythonのdatetimeライブラリも提供している時間や日付の取り回しを遥かに良くした便利ライブラリ。


用例

import pendulum


BETTER DATETIME : datetimeオブジェクトの改善


タイムゾーンの設定など


# 自動でAsia/Tokyoを設定してくれるのでnow関数は引数不要?
>>> now = pendulum.now()
>>> print(now.timezone)
Timezone('Asia/Tokyo')

# 2019年5月1日0時0分0秒をAsia/TokyoとUTCで表示
>>> in_utc = pendulum.datetime(2019, 5, 1, 0, 0, 0)
>>> in_utc.timezone
Timezone('UTC')
>>> print(in_utc)
2019-05-01T00:00:00+00:00
>>> in_jpn = in_utc.in_timezone("Asia/Tokyo")
>>> in_jpn.timezone
Timezone('Asia/Tokyo')
>>> print(in_jpn)
2019-05-01T09:00:00+09:00

# python:5/2を表示する
>>> in_utc = pendulum.datetime(2019, 5, 1, 0, 0, 0)
>>> dt = in_utc.in_timezone("Asia/Tokyo")
>>> tomorrow = dt.add(days=1)
>>> print(tomorrow)
2019-05-02T09:00:00+09:00



BETTER TIMEDELTA : timedeltaオブジェクトを改善


15日を時間に換算したり

>>> dur = pendulum.duration(days=15)

>>> print(dur)
2 weeks 1 day
>>> print(dur.weeks)
2
>>> print(dur.days)
15
>>> print(dur.hours)
0
>>> print(dur.in_hours())
360


DATETIME-AWARE INTERVAL : 日付に対応した期間計算


期間を計算

>>> in_utc = pendulum.datetime(2019, 5, 1, 0, 0, 0)

>>> week_later = in_utc.add(days=7)
>>> print(period)
<Period [2019-05-01T00:00:00+00:00 -> 2019-05-08T00:00:00+00:00]>
>>> ### 2019.8.13時点、pendulum==2.0.5では↓はAttributeErrorになります
>>> period.in_weekdays()


EASY TIMEZONES MANIPULATION : 簡単なタイムゾーン操作


タイムゾーンの変換

>>> in_jpn = pendulum.datetime(2019, 5, 1, 0, 0, 0, tz="Asia/Tokyo")

>>> tz = pendulum.timezone('Europe/Paris')
>>> in_paris = tz.convert(in_jpn)
>>> print(in_paris)
2019-04-30T17:00:00+02:00


おわり


  • python標準のdatetimeと併用もできて、足りない機能は簡単に追加できる

  • documentationがすこし不親切だが、標準ライブラリ(特にtimedelta)がなれるのに時間がかかる仕様と比較すると、感覚的に使えるpendulumは総合的にかなり親切設計。