首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django模板中使用Humanize显示"x天前“类型的时间?

如何在Django模板中使用Humanize显示"x天前“类型的时间?
EN

Stack Overflow用户
提问于 2011-06-27 23:04:55
回答 4查看 14K关注 0票数 19

当我这样做的时候:

代码语言:javascript
复制
{% load humanize %}

{{ video.pub_date|naturaltime|capfirst }}

我得到了2 days, 19 hours ago

我怎么能在没有小时的情况下只有2天。基本上,如果视频是在不到一天前发布的,那么它应该是X小时前,那么它应该以天计数,比如X天前,然后以周为单位。我只是不想要1小时5分钟前或者2天13分钟前。只有第一部分。

我看了人性化文档,但找不到我需要的东西。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-27 23:32:24

Django的a built-in template filter timesince提供了与您上面提到的相同的输出。下面的筛选器只删除逗号后面的第二部分:

代码语言:javascript
复制
from datetime import datetime, timedelta
from django import template
from django.utils.timesince import timesince

register = template.Library()

@register.filter
def age(value):
    now = datetime.now()
    try:
        difference = now - value
    except:
        return value

    if difference <= timedelta(minutes=1):
        return 'just now'
    return '%(time)s ago' % {'time': timesince(value).split(', ')[0]}
票数 31
EN

Stack Overflow用户

发布于 2011-06-27 23:22:56

您应该将django.contrib.humanize.templatetags.humanize.py复制到myapp.templatetags.myhumanize,并根据需要对其进行修改。(我找不到返回"x天,y小时前“的实际行。您使用的是哪个版本的django/humanize?)

票数 2
EN

Stack Overflow用户

发布于 2019-09-27 09:54:17

在现代姜戈中有naturaltime

假设now17 Feb 2007 16:30:00

它将16 Feb 2007 13:31:29更改为1 day, 2 hours ago

代码语言:javascript
复制
{# some_template.html #}
{% load humanize %}
{{ past_time | naturaltime }}

https://docs.djangoproject.com/en/2.2/ref/contrib/humanize/#naturaltime

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6494921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档