目次
Pythonのdatatimeにはnativeとawareが存在
- nativeはタイムゾーンを持たないdatetime
- awareはタイムゾーンを持つdatetime
- ベストプラクティスはawareにしてシステムごとにタイムゾーンに変換
django.utls.timezone を使用する
django.utls.timezoneを使用することでDjangoのUTCおよびLOCALTIMEは簡単に取得できる。
from django.utils import timezone
now_utc = timezone.now() # UTL
now_local = timezone.localtime() #LOCALTIME
デフォルトdatetimeパッケージにはないのでpytz
デフォルトパッケージにはタイムゾーンを利用する場合は継承させる必要がある。
pytzというものがあるので便利。
import datetime as st
import pytz
now_utc = dt.datetime.now(pytz.timezone('UTC')) # UTC
local_utc = now_utc.astimezone(pytz.timezone('Asia/Tokyo')) # LOCAL TIME
RuntimeWarning: DateTimeField ItemList.created received a naive datetime
要はタイムゾーンが必要なDatatime型なのに、タイムゾーン情報がないと怒られれている。