DjangoビューでTimeFieldをどのようにフォーマットしますか?私のDjangoのHTMLテンプレートで現在DjangoビューでDjango TimeFieldを作成する
私は簡単のような何かを行うことができます:{{movie.start_time|time:"g:iA"|lower}}
どのように私は、Djangoのビューで上記の同等を行うことができますか?
DjangoビューでTimeFieldをどのようにフォーマットしますか?私のDjangoのHTMLテンプレートで現在DjangoビューでDjango TimeFieldを作成する
私は簡単のような何かを行うことができます:{{movie.start_time|time:"g:iA"|lower}}
どのように私は、Djangoのビューで上記の同等を行うことができますか?
Python strftime()
関数を使用します。 https://docs.python.org/2/library/time.html#time.strftime
以下は、これを実現する方法の例です。理想的ではありませんが、これは私が思いついたものです。
import datetime
now = datetime.datetime.now()
time = now.time()
t = time.strftime("%I:%M %p")
t = t.lower()
t = list(t)
if t[0] == '0':
t.pop(0)
t = ''.join(t)
print t
この回答は大丈夫ですが、djangoテンプレートの時刻書式設定の柔軟性が失われているようです。たとえば、 'AM'または 'PM'を小文字で表示するにはどうすればよいですか? –
また、12時間形式の時刻は先行ゼロで表示されますが、これは望ましくありません。上記のdjango時間フィルタに最も近いのは、 'movie.start_time.strftime("%I:%M%p ")'です。この場合、時間に先行ゼロがあり、 'AM'と 'PM'が大文字になります。これは表示には間違いです。 –
特別な必要条件がある場合、結果文字列に 'lower()'を呼び出すと 'strftime()'の結果を手で処理することができ、 'AM'を' am'に変換します。 –