0

我有一个模板标签

 @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。任何方式?

4

1 回答 1

0

您的模板标签返回一个 timedelta,而 timedelta 不能用 strftime 格式化。我在另一个 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")
于 2015-04-20T08:59:03.333 回答