#はじめに
python3の標準ライブラリであるdatetimeでは、以下のようにtimezoneの設定が可能です。
from datetime import datetime, timedelta, timezone
JST = timezone(timedelta(hours=+9), 'JST')
now = datetime.now(JST)
print(now)
print(type(now))
実行結果
2018-08-25 22:55:19.911794+09:00
<class 'datetime.datetime'>
しかし、日付のみの形式であるdatetime.dateクラスで
タイムゾーン反映済の現在日付を取得したいような場面では、ひと手間必要になります。
#今日の日付を取得する
結論を述べると以下のようにdate関数を使うのがBESTです。
from datetime import datetime, timedelta, timezone
JST = timezone(timedelta(hours=+9), 'JST')
now = datetime.now(JST)
today = now.date()
print(today)
print(type(today))
実行結果
2018-08-25
<class 'datetime.date'>
#できなかったパターン
以下のようにした場合、タイムゾーンが反映できた場合と、できない場合がありました。
timezoneで指定した時間がモジュールのどこかに保存されて、today関数に影響を及ぼすのでしょうか?
from datetime import datetime, timedelta, timezone
JST = timezone(timedelta(hours=+9), 'JST')
today = datetime.today()
#おわりに
できなかったパターンの原因わかる方いらっしゃいましたらご助言お願いします!
#参考
Python3のdatetimeはタイムゾーンを指定するだけで高速になる
https://qiita.com/mattsu6/items/5511c5631e7a54550f7f