Djangoの日付テンプレートタグで秒をhh:mm:ssに変換する方法は?
-
08-07-2019 - |
質問
編集: {{value | date:" Z"を簡単に変換する方法があります}}
を+ hh:mmまたは-hh:mmのいずれかの形式に変更します(日付:" Z"はxxxxまたは-xxxx秒を返すため)。
これ必要な形式の詳細については。
私のい英語をありがとう、ごめんなさい。 ;)
解決
ここで明確にすると、コロンが必要なのはタイムゾーンオフセットです。つまり、上記の例の 2009-11-29T14:33:59-0600
は 2009-11-29T14です。 33:59-06:00
W3Cガイドラインに準拠します。
django / utils / dateformat.py
のコードを見る:
def O(self):
"Difference to Greenwich time in hours; e.g. '+0200'"
seconds = self.Z()
return u"%+03d%02d" % (seconds // 3600, (seconds // 60) % 60)
djangoのローカルコピーを編集して、「:」を追加できます。 return u"%+ 03d:%02d" %(seconds // 3600、(seconds // 60)%60)
または独自のテンプレートタグを作成して、同じことを効果的に行います。ただし、おそらく最も簡単な方法は、ビューで文字列を作成し、それを変数としてテンプレートに渡すことです。
タイムゾーンのHTML5バージョンはそのまま使用できるようには見えません。
[更新]
リフレクションでは、おそらくこれを行うことができます;
>>> from django.utils import dateformat
>>> fmt = "Y-m-d\TH:i:sO"
>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2009, 12, 1, 12, 39, 48, 655867)
>>> str = dateformat.format(now, fmt)
>>> print str
2009-12-01T12:39:48+0000
>>>
次に「:」を追加します
>>> s = str[:-2] + ':' + str[-2:]
>>> s
u'2009-12-01T12:39:48+00:00'
>>>
他のヒント
Zの代わりにOが必要です(これは" oh"であり、"ゼロ"です)。
>>> from django.template import *
>>> Template('{% now "Y-m-d\TH:i:sO" %}').render(Context())
u'2009-11-29T14:33:59-0600'
所属していません StackOverflow