2016-10-14 11 views
0

エポックタイムを '人間が読める'時間に変換する軽量Djangoテンプレートタグはありますか?(Humanizeのnaturaltimeと同じですか?エポック時間を人間が読める時間に変換するためのDjangoテンプレートタグ

私はdatetime.fromtimestamp(value)を返すカスタムテンプレートタグを試しましたが、これは月の日付年月日am/pmとしてタイムスタンプを表示します。私は'%(time)s ago' % {'time': timesince(value).split(', ')[0]}timesinceを使用)を返すもう1つを試みましたが、timesinceはエポックタイムを引数として許可していないようです。

答えて

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) 

これは当然daysweeksmonthsyearsに対応するために拡張することができます。

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 }} 

テストしたが、あなたのアイデアを得る必要があるわけではありません。

関連する問題