📅
タイムゾーン付きの現在日時を取得したい
はじめに
-
Python
でタイムゾーン付きの現在日時を取得する方法をまとめてみた - 気になっていた
pendulum
パッケージを使ってみたかった
pendulum
>>> import pendulum
>>> now = pendulum.now()
>>> now.isoformat()
'2020-11-15T22:55:45.113366+09:00'
pytz
>>> import datetime
>>> import pytz
>>> tz = pytz.timezone('Asia/Tokyo')
>>> now = datetime.datetime.now(tz)
>>> now.isoformat()
'2020-11-15T22:55:45.113366+09:00'
datetime
>>> import datetime
>>> tz = datetime.timezone(datetime.timedelta(hours=9), 'Asia/Tokyo')
>>> now = datetime.datetime.now(tz)
>>> now.isoformat()
'2020-11-15T22:55:45.113366+09:00'
文字列に変換
自分で文字列を指定
>>> now.strftime('%Y-%m-%dT%H:%M:%S%z')
'2020-11-15T22:55:45+09:00'
pendulumは用途に合わせた変換フォーマットを持っている
>>> now.to_w3c_string()
'2020-11-15T22:55:45+09:00'
>>> now.to_datetime_string()
'2020-11-15 22:55:45'
>>> now.to_rss_string()
'Sun, 15 Nov 2020 22:55:45 +0900'
まとめ
- デフォルトの
datetime
パッケージの場合、タイムゾーン情報はNone
になっている- タイムゾーンがないものを
naive
オブジェクトと呼ぶ - タイムゾーンがあるものを
aware
オブジェクトと呼ぶ
- タイムゾーンがないものを
-
datetime.datetime.now
は引数にdatetime.tzinfo
オブジェクトを指定できる-
datetime.tzinfo
はdatetime.timezone
もしくはpytz.timezone
で作成する
-
-
pendulum.now
は何も考えなくてもタイムゾーン付きの現在日時を得ることができる- 文字列に変換する場合も
to_用途_string()
の形で用途
に合わせた変換フォーマットをいろいろを持っているのでとても便利
- 文字列に変換する場合も
- 今後は
pendulum
をdatetime
の置き換えとして使ってみようと思う
各パッケージのドキュメント
- pendulum - python datetime made easy
- pytz - world timezone definitions for python
- datetime - basic date and time types
実行した環境
>>> sys.version
'3.8.6 (default, Oct 27 2020, 08:57:44) \n[Clang 12.0.0 (clang-1200.0.32.21)]'
>>> pytz.__version__
'2020.4'
>>> pendulum.__version__
'2.1.2'
Discussion