Domanda

Modifica: c'è un modo per convertire facilmente {{value | date: " Z " }} in uno dei formati + hh: mm o -hh: mm (perché data: " Z " restituisce xxxx o -xxxx secondi).

Mostra this per ulteriori spiegazioni sul formato necessario.

Grazie e scusa per il mio brutto inglese. ;)

È stato utile?

Soluzione

Basta chiarire qui, è l'offset del fuso orario che ha bisogno dei due punti, cioè 2009-11-29T14: 33: 59-0600 nell'esempio sopra dovrebbe essere 2009-11-29T14: 33: 59-06: 00 per conformarsi alle linee guida del W3C.

Guardando il codice su 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)

Puoi modificare la tua copia locale di django per aggiungere ':' così; ritorna u "% + 03d:% 02d " % (secondi // 3600, (secondi // 60)% 60) o crea il tuo tag modello per fare effettivamente la stessa cosa. Ma probabilmente il più semplice è comporre la stringa nella tua vista e passarla come variabile al modello.

Non sembra che la versione HTML5 del fuso orario sia pronta all'uso.

[update]

Se rifletti, potresti probabilmente farlo;

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

e quindi aggiungere ':'

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

Altri suggerimenti

Invece di Z hai bisogno di O (che è un " oh " ;, non un " zero ").

>>> from django.template import *
>>> Template('{% now "Y-m-d\TH:i:sO" %}').render(Context())
u'2009-11-29T14:33:59-0600'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top