How to display "x days ago" type time using Humanize in Django template? How to display "x days ago" type time using Humanize in Django template? python python

How to display "x days ago" type time using Humanize in Django template?


Django has a built-in template filter timesince that offers the same output you mentioned above. The following filter just strips the second part after the comma:

from datetime import datetime, timedeltafrom django import templatefrom django.utils.timesince import timesinceregister = template.Library()@register.filterdef 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]}


You should duplicate your django.contrib.humanize.templatetags.humanize.py to myapp.templatetags.myhumanize and modify it to your needs. (I can't find the actual line that returns "x days, y hours ago". Which version of django/humanize are you using?)


There is naturaltime in modern django.

Given now is 17 Feb 2007 16:30:00.

It changes 16 Feb 2007 13:31:29 to 1 day, 2 hours ago.

{# some_template.html #}{% load humanize %}{{ past_time | naturaltime }}

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