[Django]モデルmodels.DateTimeFieldに現在の時間を挿入する方法

Python文字列の日付を変換

こんばんは、エンジニアの眠れない夜です。

Djangoには django.utils.timezonという便利なクラスが用意されています。

このクラスを利用するとSettingsで指定されているローカルタイムを簡単に取得することができます。

 

[Django] settings.pyの設定

Settings.py に下記のコードを追加します。(日本向けのサービスを想定しています。)

[code]

TIME_ZONE = ‘Asia/Tokyo’

USE_TZ = True

[/code]

TIME_ZONE = 'Asia/Tokyo' で日本時間が指定されます。

USE_TZ = True でタイムゾーンを反映した時間の取得が有効になります。

Django モデルの設定

続いてモデルです。

[code]
from django.utils import timezone
class Log(models.Model):
    regist_date = models.DateTimeField(default=timezone.now)
[/code]

from django.utils import timezone をインポートしてdefault=timezone.nowこれでレコード登録時の日本時間が保存されます。

データベースの中を覗いてみると標準時で保存されているように見えますが、adminページやViewを作成して表示するときちんと日本時間で表示されます。

Viewで日本時間(ローカルタイム)を利用する方法は?

[code]

from django.utils import timezone

timezone.datetime.now() # 現在の日時
timezone.datetime.today() #今日の日付
timezone.datetime.now() - timezone.timedelta(days=1) # 1日前
[/code]

こんな感じで現在時間、日付、日付の足し算、引き算ができます。

先程のモデルの指定ではdefault=timezone.nowでしたがViewではtimezone.datetime.now()を使います。似ているけど少し違うので注意してください。

日付の足し算引き算はtimezone.timedelta(days=1)を使えば簡単にできるので日付の計算がすごく苦手な私としてはすごくありがたいです。

Javaで日付の計算をするときに比べると格段に楽です。

Django\(^o^)/バンザイ

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.