Как преобразовать секунды в hh: mm: ss с помощью тега шаблона даты Django?

StackOverflow https://stackoverflow.com/questions/1816176

  •  08-07-2019
  •  | 
  •  

Вопрос

Редактировать :есть ли способ легко конвертировать {{ value|date:"Z" }} в один из форматов +чч:мм или -чч:мм (поскольку date: "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-версия timezone доступна "из коробки".

[обновление]

Поразмыслив, вы, вероятно, могли бы сделать это;

>>> 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 (это "о", а не "ноль").

>>> from django.template import *
>>> Template('{% now "Y-m-d\TH:i:sO" %}').render(Context())
u'2009-11-29T14:33:59-0600'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top