LoginSignup
24
17

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-08-13

なにをするか

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は総合的にかなり親切設計。
24
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
17