Not naive datetime (tzinfo is already set)はなぜ起こる?(Python3)
今回はNot naive datetime (tzinfo is already set)はどういったときに起こるのかについて解説していきます。
動作環境はPython3です。
Not naive datetime (tzinfo is already set)はなぜ起こる?(Python3)
先にNot naive datetime (tzinfo is already set)はなぜ起こるのか結論を書くと、タイムゾーンをタイムゾーンに変換しているからです。
例として、次のソースを準備しました。
意図的にNot naive datetime (tzinfo is already set)を起こさせるようにしております。
1 2 3 4 5 6 7 8 9 |
import datetime import pytz utc = pytz.timezone('UTC') dt_aware = datetime.datetime(2019, 1, 1, 1, 0, 30, 1000, tzinfo=datetime.timezone.utc) aware_date = utc.localize(dt_aware) |
このソースを実行すると次のようになります。
1 2 3 4 5 6 7 8 9 |
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3 /Users/chico27/github/python-test2/timezoneTest.py Traceback (most recent call last): File "/Users/chico27/github/python-test2/timezoneTest.py", line 8, in <module> aware_date = utc.localize(dt_aware) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pytz/__init__.py", line 238, in localize raise ValueError('Not naive datetime (tzinfo is already set)') ValueError: Not naive datetime (tzinfo is already set) Process finished with exit code 1 |
UTCのタイムゾーンに変換しようとしている9行目の
aware_date = utc.localize(dt_aware)
で落ちていますね。
これはもともとdt_awareがタイムゾーンの変数として定義されているからです。
Not naive datetime (tzinfo is already set)のエラーが起きたときはタイムゾーンをタイムゾーンに変換しようとしている箇所がないか調べてみましょう。
終わりに
今回はNot naive datetime (tzinfo is already set)はなぜ起こるのかについてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません