是否有一个轻量级的Django模板标签,可以将纪元时间转换为“人类可读”的标签。时间(与Humanize中的naturaltime
相同)?
我已经尝试了一个返回datetime.fromtimestamp(value)
的自定义模板标记 - 但是这会将时间戳显示为月份日期年度时间上午/下午。我尝试了另一个返回'%(time)s ago' % {'time': timesince(value).split(', ')[0]}
的问题(使用timesince),但是时间似乎并不允许将纪元时间作为参数。
答案 0 :(得分:0)
在你到达模板之前听起来像你应该做的事情。只需将时间戳转换为datetime对象,然后再将其传入,并按原样使用它。
但如果你坚持:
from datetime import datetime
from django import template
register = template.Library()
@register.filter("parsetimestamp")
def timestamp(value):
try:
return datetime.fromtimestamp(value)
except AttributeError, e:
catch errors..
然后在模板中使用链接:
{{ your_time_stamp | parsetimestamp | timeuntil }}
未经测试,但您应该明白这一点。
答案 1 :(得分:0)
我最终选择了不同的东西 - 避免链接等我的模板:
from django.template.defaulttags import register
import time
@register.filter(name='human_time')
def human_time(value):
try:
diff = time.time() - float(value)
except:
return ''
m, s = divmod(diff, 60)
h, m = divmod(m, 60)
if h:
return "%s hours ago" % int(h)
elif m:
return "%s minutes ago" % int(m)
elif s:
return "%s seconds ago" % int(s)
这可以自然地扩展到适合days
,weeks
,months
甚至years
。