在django模板中显示时间戳

sc4hvdpw  于 2023-04-13  发布在  Go
关注(0)|答案(5)|浏览(123)

我需要在django模板中显示一个帖子的时间戳。时间戳将是这样的:

"timestamp":1337453263939 in milli seconds

我可以将timestamp转换为datetime对象,并在视图中呈现。有没有直接通过模板显示的方法?输出应该是:

print(datetime.datetime.fromtimestamp(1337453263.939))
2012-05-20 00:17:43.939000
7gyucuyw

7gyucuyw1#

注意:这个答案实际上解决了***反向***问题(当有日期时间时显示时间戳)。OP的正确答案(谁有时间戳并想要日期时间)是制作自定义模板标签或过滤器,请参阅接受的答案。

{% now "U" %}

"U"是Unix epoch的日期格式,也可以与内置的date过滤器一起使用。因此,如果您在变量中包含日期:

{{ value|date:"U" }}
piztneat

piztneat2#

您可以使用自定义模板过滤器(请参阅https://docs.djangoproject.com/en/dev/howto/custom-template-tags/)。在您的情况下,它可以像这样:
1.创建目录'templatetags'在应用程序与视图,呈现模板。
1.在此目录中放入空白文件“init.py”和“timetags.py“,代码如下:

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)

1.在模板中,添加

{% load timetags %}

1.在模板中使用以下语法:

{{ timestamp|print_timestamp }}

其中timestamp = 1337453263.939来自您的示例
这将以本地日期和时间格式打印timestamp。如果您想自定义输出,可以通过以下方式修改print_timestamp:

import time
def print_timestamp(timestamp):
    ...
    #specify format here
    return time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(ts))
93ze6v8z

93ze6v8z3#

你可以使用日期过滤器:https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#date

kx5bkwkv

kx5bkwkv4#

我不认为日期过滤器需要时间戳,所以除非我监督一个过滤器,你可以简单地创建一个?

# python
from datetime import datetime

# django
from django import template

register = template.Library()

@register.filter("timestamp")
def timestamp(value):
    try:
        return datetime.fromtimestamp(value)
    except AttributeError, e:
        catch errors..
h5qlskok

h5qlskok5#

只需编写一个自定义过滤器,将时间戳字符串转换为datetime对象。然后您可以进一步将其处理为可读的内容(表示时间的字符串)并将其返回到模板,或者仅返回一个python datetime对象并使用django的日期过滤器。
因此,您可以得到类似于{{ timestamp_string|转换为日期时间|日期:'D d M Y' }}
更多关于这个主题的信息:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

相关问题