Django では django.utils.timezone
モジュールを活用して、タイムゾーンを考慮した日時の処理が可能です。
✅ この記事で学べること
timezone
モジュールの基本Django では timezone
モジュールを利用することで、タイムゾーンを考慮した日時処理を行えます。
PYTHONfrom django.utils import timezone now = timezone.now() print(now) # 出力例: 2025-02-19 12:00:00+00:00(UTC)
デフォルトでは USE_TZ = True
の設定が有効になっており、UTC で現在時刻が取得 されます。
PYTHONfrom django.utils.timezone import localtime japan_time = localtime(now) print(japan_time) # 出力例: 2025-02-19 21:00:00+09:00(JST)
localtime()
を使用すると、プロジェクトで設定した TIME_ZONE
(Asia/Tokyo
など) に基づいて変換されます。
ユーザーごとに異なるタイムゾーンを適用する場合、timezone.activate()
を使用します。
PYTHONfrom django.utils.timezone import activate import pytz activate(pytz.timezone('America/New_York')) print(localtime(timezone.now())) # 出力例: 2025-02-19 07:00:00-05:00(EST)
この方法を使えば、特定のリクエストの間だけ異なるタイムゾーンを適用 できます。
Django では timezone.make_aware()
を使うことで、タイムゾーン情報のない datetime オブジェクトを aware datetime に変換 できます。
PYTHONfrom django.utils.timezone import make_aware from datetime import datetime import pytz naive_dt = datetime(2025, 2, 19, 15, 0, 0) # タイムゾーンなし aware_dt = make_aware(naive_dt, timezone=pytz.timezone('Asia/Tokyo')) print(aware_dt) # 出力例: 2025-02-19 15:00:00+09:00
また、make_naive()
を使用すると UTC ベースの aware datetime をローカルタイムに変換できます。
PYTHONfrom django.utils.timezone import make_naive naive_local_dt = make_naive(aware_dt, timezone=pytz.timezone('Asia/Tokyo')) print(naive_local_dt) # 出力例: 2025-02-19 15:00:00
Django では strftime()
を使用して日時のフォーマットを変更できます。
PYTHONdate_str = aware_dt.strftime('%Y/%m/%d %H:%M:%S') print(date_str) # 出力例: 2025/02/19 15:00:00
また、文字列を datetime に変換するには strptime()
を使用します。
PYTHONfrom datetime import datetime parsed_date = datetime.strptime('2025/02/19 15:00:00', '%Y/%m/%d %H:%M:%S') print(parsed_date) # 出力例: 2025-02-19 15:00:00
関数 | 説明 |
---|---|
timezone.now() | UTC の現在時刻を取得 |
localtime() | ローカルタイムに変換 |
timezone.activate() | 特定のタイムゾーンを適用 |
make_aware() | naive datetime を aware に変換 |
make_naive() | aware datetime を naive に変換 |
strftime() | datetime を文字列に変換 |
strptime() | 文字列を datetime に変換 |
Django の timezone
モジュールを活用すると、タイムゾーンを考慮した正確な日時処理 が可能になります。
特に、国際対応のアプリでは USE_TZ = True
を推奨します。
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。