将Django DateField格式化为ISO格式

rei*_*ein 19 django date

我正在使用Django来提供一些XML.部分要求是我的日期格式如下:1969-12-31T18:33:28-06:00

如何以该格式在Django中输出DateField?

小智 28

Django 1.2中的新功能,有一个模板标签可以输出您想要的内容:

{{ value|date:"c"}}
Run Code Online (Sandbox Code Playgroud)

Django模板文档:

c | ISO 8601格式| 2008-01-02T10:30:00.000123

从技术上讲,这更接近W3-DTF,但足够接近


Emy*_*myr 9

由于Django是用Python编写的,

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

datetime(2002, 12, 25, tzinfo=TZ()).isoformat()
Run Code Online (Sandbox Code Playgroud)


Amo*_*mos 6

如果您在Django文档中查看日期,您将看到支持日期的各种格式.基本上在您需要的模板中:

{{ value|date:"some format string" }} 
Run Code Online (Sandbox Code Playgroud)

其中格式字符串可以是上面页面上日期定义的格式字符串之一,也可以是现在功能(包括ISO 8601格式)下定义的自定义格式之一,该格式字符串也在上面链接的页面上.我假设当你输出到xml时,你的方式与普通网页的模板类似.

更新(2014年8月)

如Edgar R的另一个答案所示,从版本1.2开始,您现在可以使用内置开关使用格式字符串输出ISO 8601格式的日期:c

  • 谢谢.我通过在我的xml中使用以下模板解决了它:<EntryDate> {{note.entry_date | date:"Ymd\TH:i:sO"}} </ EntryDate> (4认同)