Frage

Edit: Gibt es eine Möglichkeit, einfach {{ value|date:"Z" }} einem der + hh zu konvertieren: mm oder -hh: mm-Formate (weil Datum: "Z" liefert xxxx oder -xxxx Sekunden).

this für weitere Erklärungen über das benötigte Format.

Vielen Dank und sorry für mein hässlich Englisch. ;)

War es hilfreich?

Lösung

Just Klärung hier, es ist die Zeitzone-Offset, der den Doppelpunkt, dh 2009-11-29T14:33:59-0600 im obigen Beispiel benötigt, sollte zu den W3C-Richtlinien entsprechen 2009-11-29T14:33:59-06:00 werden.

auf dem Code in django/utils/dateformat.py Suche:

  def O(self):
    "Difference to Greenwich time in hours; e.g. '+0200'"
    seconds = self.Z()
    return u"%+03d%02d" % (seconds // 3600, (seconds // 60) % 60)

Sie können bearbeiten Ihre lokale Kopie von django die hinzuzufügen ':' so; return u"%+03d:%02d" % (seconds // 3600, (seconds // 60) % 60) oder Ihre eigene Vorlage Tag erstellen effektiv das Gleiche zu tun. Aber wahrscheinlich die einfachste ist die Zeichenfolge aus Ihrer Sicht zu komponieren, und übergeben Sie, dass zusammen als eine Variable auf die Vorlage.

Es sieht nicht wie die HTML5-Version der Zeitzone aus der Box zur Verfügung.

[Update]

Bei der Reflexion Sie könnte dies wahrscheinlich tun;

>>> 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
>>>

und fügen Sie dann die ':'

>>> s = str[:-2] + ':' + str[-2:]
>>> s
u'2009-12-01T12:39:48+00:00'
>>> 

Andere Tipps

Statt Z müssen Sie O (das ist ein "oh", kein "Null").

>>> from django.template import *
>>> Template('{% now "Y-m-d\TH:i:sO" %}').render(Context())
u'2009-11-29T14:33:59-0600'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top