読者です 読者をやめる 読者になる 読者になる

牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

最近 Python で時間を扱うモジュールは『arrow』がブームらしいメモ

Python

(python==2.7, arrow==0.3.5)


dateutilあるけど、arrowもいいらしい。
こっちの方がモダンっぽいらしい。
id:Voluntas師匠に教えてもらった。

>>> import arrow

# 現在
>>> arw = arrow.utcnow()

>>> arw
<Arrow [2013-09-05T15:06:49.312975+00:00]>

# 翌月(年月日を複数形で指定して増減)
>>> arw.replace(months=1)
<Arrow [2013-10-05T15:06:49.312975+00:00]>

## =の後に+-付けた方が分りやすいかも
>>> arw.replace(months=+1)
<Arrow [2013-10-05T15:06:49.312975+00:00]>

# 月を指定(単数形で指定)
>>> arw.replace(month=1)
<Arrow [2013-01-05T15:06:49.312975+00:00]>

# 年をまたいでみる
>>> dec = arw.replace(month=12)
>>> dec
<Arrow [2013-12-05T15:06:49.312975+00:00]>

>>> dec.replace(days=+33)
<Arrow [2014-01-07T15:06:49.312975+00:00]>

>>> arw
<Arrow [2013-09-05T15:06:49.312975+00:00]>

# 翌月1日
>>> arw.replace(months=+1, day=1)
<Arrow [2013-10-01T15:06:49.312975+00:00]>

# 翌月末日(もっとシンプルな書き方ある?)
>>> arw.replace(months=2, day=1, days=-1)
<Arrow [2013-10-31T15:06:49.312975+00:00]>

#ちなみに days=+33 とかすると月から溢れた分が次月に追加される(dateutilは末日以上加算されない)
>>> arw.replace(month=+1, days=+33)
<Arrow [2013-11-07T15:06:49.312975+00:00]>

# datetime
>>> arw
<Arrow [2013-09-05T15:06:49.312975+00:00]>

>>> arw.datetime
datetime.datetime(2013, 9, 5, 15, 6, 49, 312975, tzinfo=tzutc())

日本語ロケールが...

無かったんでプルリクエストして取込んでもらった

そのうち pip でインストールできるようになるかも
(現在の arrow==0.3.5 は日本語ロケール無い)

>>> prev_month = arw.replace(hours=-1)
>>> print arw.humanize()
an hour ago
>>> print arw.humanize(locale='ja')
1時間前