Tri*_*ton 9 python django time date strptime
在我的Django应用程序中,我从作为字符串提供的web服务中获取时间,我在模板中使用:
{{date.string}}
Run Code Online (Sandbox Code Playgroud)
这为我提供了一个日期,例如:
2009-06-11 17:02:09+0000
Run Code Online (Sandbox Code Playgroud)
这些显然有点难看,我想以一种很好的格式向我的用户展示它们.Django有一个很棒的内置日期格式化程序,可以完全按照我想要的方式执行:
{{ value|date:"D d M Y" }}
Run Code Online (Sandbox Code Playgroud)
但是,这要求将值作为日期对象提供,而不是字符串.所以我不能用它来格式化它.在这里搜索StackOverflow pythons strptime似乎做我想要的,但对Python来说相当新我想知道是否有人能想出一个更简单的方法来使用字符串获取日期格式,而不必诉诸于编写一个全新的自定义strptime模板标签?
Jar*_*die 11
您可能最好解析从视图代码中的Web服务接收的字符串,然后将datetime.date(或字符串)传递给模板以供显示.Django模板的精神在于那里应该进行很少的编码工作; 它们仅用于演示,这就是为什么它们会竭尽全力阻止您编写嵌入HTML的Python代码.
就像是:
from datetime import datetime
from django.shortcuts import render_to_response
def my_view(request):
ws_date_as_string = ... get the webservice date
the_date = datetime.strptime(ws_date, "%Y-%m-%d %H:%M:%S+0000")
return render_to_response('my_template.html', {'date':the_date})
Run Code Online (Sandbox Code Playgroud)
正如马修指出的那样,这会降低时区.如果您希望保留GMT的偏移量,请尝试使用优秀的第三方dateutils库,它可以使用时区无缝处理多种格式的解析日期,而无需提供像strptime这样的时间格式模板.