Pergunta

Editar: existe uma maneira de converter facilmente {{ value|date:"Z" }} a um dos hh +: mm ou hh: mm formatos (porque a data: "Z" retornos xxxx ou segundos -XXXX).

este para mais explicações sobre o formato necessário.

Obrigado e desculpe pelo meu feio Inglês. ;)

Foi útil?

Solução

Apenas esclarecer aqui, é o deslocamento que as necessidades do cólon, ou seja 2009-11-29T14:33:59-0600 no exemplo acima deve ser 2009-11-29T14:33:59-06:00 em conformidade com as diretrizes do W3C fuso horário.

Olhando para o código em 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)

Você pode editar sua cópia local do Django para adicionar o ':' assim; return u"%+03d:%02d" % (seconds // 3600, (seconds // 60) % 60) ou criar sua própria marca de modelo para efetivamente fazer a mesma coisa. Mas, provavelmente, o mais fácil é para compor a corda na sua opinião, e passar que junto como uma variável para o modelo.

Ele não se parece com a versão HTML5 do fuso horário está disponível fora da caixa.

[update]

Na reflexão que você provavelmente poderia fazer isso;

>>> 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 adicione o ':'

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

Outras dicas

Em vez de Z você precisa O (que é um "oh", não um "zero").

>>> from django.template import *
>>> Template('{% now "Y-m-d\TH:i:sO" %}').render(Context())
u'2009-11-29T14:33:59-0600'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top