如何在 Django 模板中解析“2015-01-01T00:00:00Z”?
How to parse "2015-01-01T00:00:00Z" in Django Template?
在我的 Django html 模板中,我使用格式为 haystack 的 SOLR facet_date 结果
“2015-01-01T00:00:00Z”。如何在我的模板中以“01/01/2015”格式解析它?
我的模板是
{{ facets.dates.created.start }}
我应该在模板中添加什么“|date:”选项?
谢谢!
您可以为此使用 Django 模板标签。您需要使用 {{my_date|date:"some_format"}} 将 "my_date" 作为参数(它应该是一个日期对象)到 "date" 标签然后格式化它基于给定的格式。
{{facets.dates.created.start|date:"d/m/Y"}}
如果您的日期是 ISO 字符串而不是 Python datetime.datetime,我想您将不得不在视图中解析它或编写自定义过滤器:
# yourapp/templatetags/parse_iso.py
from django.template import Library
import datetime
register = Library()
@register.filter(expects_localtime=True)
def parse_iso(value):
return datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M:%SZ")
然后在模板处:
{% load parse_iso %}
{{ value|parse_iso|date:'d/m/Y'}}
[编辑]
got this error Exception Type: TemplateSyntaxError at /search/ Exception Value: 'parse_iso' is not a valid tag library: Template library parse_iso not found
确保您遵循 code layout prescribed in the docs:
yourapp/
__init__.py
models.py
...
templatetags/
__init__.py
parse_iso.py
views.py
你的国家可能使用m/d/Y
(01/01/2015
是不明确的,我建议使用像31/01/2015
这样的例子,这样就可以清楚地知道第一个数字是代表日还是代表月)。
如果 {{ facets.dates.created.start }}
是日期时间对象,那么您可以使用
{{ facets.dates.created.start|date:"SHORT_DATE_FORMAT" }}
如果您提供的是字符串,您可以创建模板过滤器以将字符串转换为日期时间对象并应用 date
过滤器
@register.filter
def stringformat(value, args):
return datetime.strptime(value, args)
在模板中:
{{ facets.dates.created.start|stringformat:"%Y-%m-%dT%H:%M:%SZ"|date:"SHORT_DATE_FORMAT" }}
在我的 Django html 模板中,我使用格式为 haystack 的 SOLR facet_date 结果 “2015-01-01T00:00:00Z”。如何在我的模板中以“01/01/2015”格式解析它? 我的模板是
{{ facets.dates.created.start }}
我应该在模板中添加什么“|date:”选项? 谢谢!
您可以为此使用 Django 模板标签。您需要使用 {{my_date|date:"some_format"}} 将 "my_date" 作为参数(它应该是一个日期对象)到 "date" 标签然后格式化它基于给定的格式。
{{facets.dates.created.start|date:"d/m/Y"}}
如果您的日期是 ISO 字符串而不是 Python datetime.datetime,我想您将不得不在视图中解析它或编写自定义过滤器:
# yourapp/templatetags/parse_iso.py
from django.template import Library
import datetime
register = Library()
@register.filter(expects_localtime=True)
def parse_iso(value):
return datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M:%SZ")
然后在模板处:
{% load parse_iso %}
{{ value|parse_iso|date:'d/m/Y'}}
[编辑]
got this error
Exception Type: TemplateSyntaxError at /search/ Exception Value: 'parse_iso' is not a valid tag library: Template library parse_iso not found
确保您遵循 code layout prescribed in the docs:
yourapp/
__init__.py
models.py
...
templatetags/
__init__.py
parse_iso.py
views.py
你的国家可能使用m/d/Y
(01/01/2015
是不明确的,我建议使用像31/01/2015
这样的例子,这样就可以清楚地知道第一个数字是代表日还是代表月)。
如果 {{ facets.dates.created.start }}
是日期时间对象,那么您可以使用
{{ facets.dates.created.start|date:"SHORT_DATE_FORMAT" }}
如果您提供的是字符串,您可以创建模板过滤器以将字符串转换为日期时间对象并应用 date
过滤器
@register.filter
def stringformat(value, args):
return datetime.strptime(value, args)
在模板中:
{{ facets.dates.created.start|stringformat:"%Y-%m-%dT%H:%M:%SZ"|date:"SHORT_DATE_FORMAT" }}