Отформатируйте Django DateField в формате ISO - PullRequest
18 голосов
/ 22 марта 2010

Я использую Django для обслуживания некоторых XML. Часть требований заключается в том, что мои даты имеют следующий формат: 1969-12-31T18: 33: 28-06: 00

Как вывести DateField в Django в этом формате?

Ответы [ 4 ]

26 голосов
/ 01 декабря 2011

Новое в Django 1.2, есть тег шаблона, который выведет то, что вы хотите:

{{ value|date:"c"}}

Из документации Django :

с | ISO 8601 Формат | 2008-01-02T10: 30: 00,000123

Технически, это ближе к W3-DTF , но достаточно близко

7 голосов
/ 22 марта 2010

Поскольку Django написан на Python,

http://docs.python.org/library/datetime.html#datetime.datetime.isoformat

datetime(2002, 12, 25, tzinfo=TZ()).isoformat()
6 голосов
/ 22 марта 2010

Если вы посмотрите на дату в документации Django , вы увидите, что поддерживаются различные форматы даты. В основном в шаблоне вам нужно:

{{ value|date:"some format string" }} 

где строка формата может быть одной из тех, которые определены под датой на странице выше, или одной из пользовательских, определенных в функции now (которая включает формат ISO 8601), которая также находится на странице, на которую ссылается выше. Я предполагаю, что при выводе в xml вы делаете это аналогично шаблону для обычной веб-страницы.

Обновление (август 2014 г.)

Как указано в другом ответе Эдгара Р., начиная с версии 1.2 теперь вы можете использовать встроенный переключатель для вывода даты в формате ISO 8601 с использованием строки формата: c

1 голос
/ 22 марта 2010

Ознакомьтесь с этими документами:

http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#date http://docs.djangoproject.com/en/dev/ref/settings/#setting-DATE_FORMAT http://docs.djangoproject.com/en/dev/ref/templates/builtins/#ttag-now

Этого должно быть достаточно для форматирования даты любым удобным вам способом..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...