from django import template
import datetime
register = template.Library()
def print_timestamp(timestamp):
try:
#assume, that timestamp is given in seconds with decimal point
ts = float(timestamp)
except ValueError:
return None
return datetime.datetime.fromtimestamp(ts)
register.filter(print_timestamp)
5条答案
按热度按时间7gyucuyw1#
注意:这个答案实际上解决了***反向***问题(当有日期时间时显示时间戳)。OP的正确答案(谁有时间戳并想要日期时间)是制作自定义模板标签或过滤器,请参阅接受的答案。
"U"
是Unix epoch的日期格式,也可以与内置的date
过滤器一起使用。因此,如果您在变量中包含日期:piztneat2#
您可以使用自定义模板过滤器(请参阅https://docs.djangoproject.com/en/dev/howto/custom-template-tags/)。在您的情况下,它可以像这样:
1.创建目录'templatetags'在应用程序与视图,呈现模板。
1.在此目录中放入空白文件“init.py”和“timetags.py“,代码如下:
1.在模板中,添加
1.在模板中使用以下语法:
其中timestamp = 1337453263.939来自您的示例
这将以本地日期和时间格式打印timestamp。如果您想自定义输出,可以通过以下方式修改print_timestamp:
93ze6v8z3#
你可以使用日期过滤器:https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#date
kx5bkwkv4#
我不认为日期过滤器需要时间戳,所以除非我监督一个过滤器,你可以简单地创建一个?
h5qlskok5#
只需编写一个自定义过滤器,将时间戳字符串转换为datetime对象。然后您可以进一步将其处理为可读的内容(表示时间的字符串)并将其返回到模板,或者仅返回一个python datetime对象并使用django的日期过滤器。
因此,您可以得到类似于{{ timestamp_string|转换为日期时间|日期:'D d M Y' }}
更多关于这个主题的信息:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/