日付関連の処理を簡単にするモジュールDeloreanの紹介

Pycoder's Weekly に関わってる @myusuf3 さんが作った Delorean が便利。

インストール

特別なことはしなくていい

$ pip install --upgrade delorean

使ってみる

とりあえずDeloreanオブジェクト生成。

>>> import delorean
>>> from datetime import datetime
>>> now = datetime.now()
>>> d = delorean.Delorean(now, 'UTC')
>>> d
Delorean(datetime=2013-01-26 21:48:33.535728+00:00, timezone=UTC)
>>> d.date
datetime.date(2013, 1, 26)

パース。

>>> delorean.parse('14/02/03')
Delorean(datetime=2014-02-03 00:00:00+00:00, timezone=UTC)
>>> delorean.parse('2014-05-03')
Delorean(datetime=2014-05-03 00:00:00+00:00, timezone=UTC)

過去と未来を行き来してみる。

>>> d.next_day(1)
Delorean(datetime=2013-01-27 21:48:33.535728+00:00, timezone=UTC)
>>> d.next_day(2)
Delorean(datetime=2013-01-28 21:48:33.535728+00:00, timezone=UTC)
>>> d.next_monday(5)
Delorean(datetime=2013-02-25 21:48:33.535728+00:00, timezone=UTC)
>>> d.next_friday(1)
Delorean(datetime=2013-02-01 21:48:33.535728+00:00, timezone=UTC)
>>> d.last_week()
Delorean(datetime=2013-01-19 21:48:33.535728+00:00, timezone=UTC)
>>> d.last_week(1)
Delorean(datetime=2013-01-19 21:48:33.535728+00:00, timezone=UTC)
>>> d.last_week(2)
Delorean(datetime=2013-01-12 21:48:33.535728+00:00, timezone=UTC)
>>> d.last_day()
Delorean(datetime=2013-01-25 21:48:33.535728+00:00, timezone=UTC)
>>> d.last_day(1)
Delorean(datetime=2013-01-25 21:48:33.535728+00:00, timezone=UTC)
>>> d.last_day(2)
Delorean(datetime=2013-01-24 21:48:33.535728+00:00, timezone=UTC)
>>> d.last_friday()
Delorean(datetime=2013-01-25 21:48:33.535728+00:00, timezone=UTC)
>>> d.last_friday(2)
Delorean(datetime=2013-01-18 21:48:33.535728+00:00, timezone=UTC)

ストップ。

>>> from delorean import stops
>>> for stop in stops(freq=delorean.MONTHLY, count=3):
...     print stop
...
Delorean(datetime=2013-01-26 13:25:49+00:00, timezone=UTC)
Delorean(datetime=2013-02-26 13:25:49+00:00, timezone=UTC)
Delorean(datetime=2013-03-26 13:25:49+00:00, timezone=UTC)
>>>

デロリアンの名前らしく過去と未来を自由に行き来できますね。