Формат Django DateField как формат ISO
Я использую Django для обслуживания некоторого XML. Часть требований заключается в том, что мои даты форматируются следующим образом: 1969-12-31T18: 33: 28-06: 00
Как я могу вывести DateField в Django в этом формате?
Ответы
Ответ 1
Если вы посмотрите на дату в документации Django, вы увидите, что поддерживаются различные форматы даты. В основном в шаблоне вам нужно:
{{ value|date:"some format string" }}
где строка формата может быть одной из тех, которые определены в дате на странице выше или один из пользовательских, определенных в рамках функции now (которая включает формат ISO 8601), которая также находится на странице, связанной с выше. Я предполагаю, что когда вы выходите на xml, вы делаете это аналогично шаблону для обычной веб-страницы.
Обновление (август 2014 года)
Как указано в другом ответе Эдгара Р, начиная с версии 1.2, теперь вы можете использовать встроенный переключатель для вывода даты в формате ISO 8601 с использованием строки формата: c
Ответ 2
Новое в Django 1.2, есть тег шаблона, который выводит то, что вы хотите:
{{ value|date:"c"}}
Из документации по шаблону Django:
c | ISO 8601 Формат | 2008-01-02T10: 30: 00,000123
Технически это ближе к W3-DTF, но достаточно близко
Ответ 3
Так как Django написан на Python,
http://docs.python.org/library/datetime.html#datetime.datetime.isoformat
datetime(2002, 12, 25, tzinfo=TZ()).isoformat()
Ответ 4
Проверьте эти документы:
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
Этого должно быть достаточно, чтобы отформатировать дату любым способом, как вы пожелаете.