繁体   English   中英

Django模板标签

[英]Django Template Tag

我有一个模板标签

 @register.filter
def get_total(date_start=None, date_end=None):
    fmt = '%Y-%m-%d %H:%M:%S%f'
    if date_start is not None and date_end is not None:
        ds = str(date_start)
        new_ds = ds[:19]
        de = str(date_end)
        new_de = de[:19]
        date_start = datetime.strptime(new_ds, fmt)
        date_end = datetime.strptime(new_de, fmt)
        return date_end - date_start
    else:
        return None

并像这样将其传递到我的网站中,

<td>{{ table.start_time|get_total:table.Date_Time_End }}</td>

我的结果之一如下:“ 16天,13:39:59.900000”我不想看到多余的900000。可以吗?

您的模板标记返回一个timedelta,并且无法使用strftime格式化timedelta。 我在另一个SO答案中找到了此功能:

def strfdelta(tdelta, fmt):
    d = {"days": tdelta.days}
    d["hours"], rem = divmod(tdelta.seconds, 3600)
    d["minutes"], d["seconds"] = divmod(rem, 60)
    return fmt.format(**d)

使用此功能,您可以修改模板标签以返回格式化的字符串:

return strfdelta(date_end - date_start, "%D days %H:%M:%S")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM