Python - 日時を扱うメモ

日時といっても、私の場合は「今日」の取得と文字列との変換くらいしか使わないがね

使い方

datetime をインポートしてモジュールを使えるようにする

import datetime

now()で現在日時を取得できる

dt = datetime.datetime.now()

取得したものはそのままprint()できる

print(dt)
# 2018-06-14 11:22:33.444444

strftime()で文字列にできる。
このとき書式を設定でき、例えば以下のようにすると、上記print()時と同じになる

s = dt.strftime('%Y-%m-%d %H:%M:%S.%f')
print(s)
# 2018-06-14 11:22:33.444444

逆に文字列からdatetimeオブジェクトにする場合はstrptime()を使う。
変換書式を指定して、それに合致すれば変換される

s = dt.strftime('%Y-%m-%d %H:%M:%S.%f')
dt2 = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S.%f')
# dt == dt2

書式文字列の詳細はドキュメント参照

タイムゾーン

きちんとタイムゾーンまで含めて扱いたい場合は外部ライブラリに頼る。
datetimeと似たようなインタフェースで便利なラッパーみたいなpendulumいうライブラリがある。

pip でインストール

$ pip3 install pendulum

pendulum をインポートしてモジュールを使えるようにする

import pendulum

datetime.datetimependulum に置き換えれば、だいたいそのまま動く

dt = pendulum.now()

タイムゾーンを変更する。
in_timezone()で現地時刻を取得できる。

dt_utc = dt.in_timezone(tz='UTC')

set()だとその日時を現地時刻とすることになる。(時差情報だけが更新される)

dt_utc = dt.in_timezone(tz='UTC')

タイムゾーンに設定できるのは’Asia/Tokyo’みたいなやつ(IANA time zone database)

以上


See also