flabaka blog

django Tips

Djangoの組み込みフィルタリファレンスのdateを使ってみる

DjangoのDateTimeFieldを使ってデータベースに作成した日時を入れて、テンプレート側で取り出す際に、日付のフォーマットを変更したいなっていう場合、組み込みフィルタのdateを使ってあげると良いみたい。

組み込みフィルタを使わない場合

{{ blog.created_datetime }}

テンプレート側でこんな感じで記述すると、settings.pyのLANGUAGE_CODEをjaに設定していると、2020年5月28日21:47 みたいに値をそのまま表示出来ます。

でも、年月日だけ取り出したいって場合は、どうするんだ? って。

Djangoの日本語ドキュメントを見てみる

日本語ドキュメントを眺めていたら、組み込みフィルタリファレンスにdateが掲載されていたので、試してみました。

日付フォーマットいろいろ

{{ blog.created_datetime | date:”D d M Y” }}

利用可能フォーマット文字の下にある例を試してみると、木 28 5月 2020 と表示される。

{{ blog.created_datetime | date }}

次にdateだけを試してみると、2020年5月28日 と表示された。

プリセット各種

{{ blog.created_datetime | date:”DATE_FORMAT” }}

フォーマットにはプリセットも用意されているみたいなので、まずは”DATE_FORMAT”を使ってみると、2020年5月28日 と表示された。

{{ blog.created_datetime | date:”DATETIME_FORMAT” }}

“DATETIME_FORMAT”を使うと、2020年5月28日21:47 と表示された。

{{ blog.created_datetime | date:”SHORT_DATE_FORMAT” }}

“SHORT_DATE_FORMAT”を使うと、2020/05/28 と表示された。

{{ blog.created_datetime | date:”SHORT_DATETIME_FORMAT” }}

“SHORT_DATETIME_FORMAT”を使うと、2020/05/28 21:47 と表示された。

区切り文字を変更したい

区切り文字を、日本語(年月日)やスラッシュ以外にしたい場合はどうすんの? って思っていたら、フォーマットはPHPのdate()関数に似た書式を使えるってあったので…

{{ blog.created_datetime | date:”Y-m-d” }}

こんな感じで書いてあげると、2020-05-28 と表示された。

他にも出来そうなので、色々試してみたいと思います。