如何在django模板中将整数中的unix时间戳转换为人类可读格式?

时间:2012-01-29 19:23:54

标签: django templates date timestamp

我将日期作为整数字段存储在我的数据库中,并将其称为时间戳。当我在模板中显示它时,我尝试使用{{ timestamp | date:"D d M Y" }},但是,这不会为我输出任何内容。

我做错了吗?

编辑: 抱歉打字错误,我确实在我的代码中输入了date:而不是date =。但是,由于时间戳是整数字段,我应该在执行此操作之前将其转换为日期时间吗?我可以在模板中做到吗?由于这行代码正在迭代模板中的对象数组。

3 个答案:

答案 0 :(得分:2)

{{ timestamp|date:"D d M Y" }}

“=”!=“:”;)

编辑:

如果您有权访问该视图,我建议将日期作为日期时间对象发送到模板,而不是整数。

  

来自文档:{{value | date:“D d M Y”}}如果value是日期时间对象   (例如,datetime.datetime.now())的结果,输出将是   字符串'Wed 09 Jan 2008'。

以下是日期功能文档的链接:Django|Built-in-template-tags-and-filters|Date

您是否也尝试仅打印整数以查看其中是否确实存在正确的值?

答案 1 :(得分:2)

您需要创建自定义模板标签过滤器。我为您制作了这个:只需确保 app目录中有templatetags文件夹,然后在目录中创建一个空文件__init__.py。同时将以下代码保存在templatetag目录中timestamp_to_time.py。 还要确保包含此templatetag目录的应用程序位于INSTALLED_APPS设置变量中。

from django import template    
register = template.Library()    

@register.filter('timestamp_to_time')
def convert_timestamp_to_time(timestamp):
    import time
    return datetime.date.fromtimestamp(int(timestamp))

在模板中,您可以按照以下步骤使用过滤器:

{{ value|timestamp_to_time|date:"jS N, Y" }} 

{#replace value 的时间戳值,然后格式您想要的时间#}

请务必使用

在模板中加载模板标签过滤器
{% load timestamp_to_time %}

尝试使用过滤器之前

答案 2 :(得分:1)

要使用Django的内置日期过滤器,您应该使用DateFieldDateTimeField。 请注意,您可以轻松convert a timestamp to python datetime,这是DateField使用的格式。

另请查看correct syntax的文档:

{{ value|date:"D d M Y" }}