This is tag similar to timesince and timeuntil, which work great until you starting giving timesince dates in the future or timeuntil dates in the past. Timedelta tag will humanize output correctly for both future and past dates using now as a default reference date (or a specified reference date as argument)
now = Apr 27 2007
futuredate = May 5 2007
pastdate = Jan 5 2007
{{ futuredate|timedelta }} will output "in 1 week, 1 day"
{{ pastdate|timedelta }} will output "3 months, 2 weeks ago"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from django import template
from django.utils.timesince import timesince
from datetime import datetime
register = template.Library()
def timedelta(value, arg=None):
if not value:
return ''
if arg:
cmp = arg
else:
cmp = datetime.now()
if value > cmp:
return "in %s" % timesince(cmp,value)
else:
return "%s ago" % timesince(value,cmp)
register.filter('timedelta',timedelta)
|
More like this
- get_object_or_none by azwdevops 3 months, 2 weeks ago
- Mask sensitive data from logger by agusmakmun 5 months, 1 week ago
- Template tag - list punctuation for a list of items by shapiromatron 1 year, 7 months ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 1 year, 7 months ago
- Serializer factory with Django Rest Framework by julio 2 years, 2 months ago
Comments
Please login first before commenting.