2016-09-14 17 views
0

私はDjangoアプリケーションでナチュラルタイムを使用します。分、時間、日および週を伴うNaturaltime

時間を分、時間、日、週単位で表示するにはどうすればよいですか?

は、ここに私のコードです:

{{ obj.pub_date|naturaltime }} 
+0

です。 ;) – allcaps

+0

これはhttp://momentjs.com/のようないくつかのjsモジュールを使って行うのが一番良いと思います。テンプレートのdatetimeスタンプをレンダリングし、残りの部分をjsに任せましょう。 – allcaps

答えて

0

私はバベルとpytzを使用して非常によく似た問題を解決するために2つのカスタムフィルタを使用しています。私は「今日」または「昨日」に時間を加えて書きます。あなたは好きな方法で自分のコードを使用することができます。

テンプレートコードは、「今日」、「昨日」、それ以前の日付の2つの使用法です。

{{ scored_document.fields.10.value|format_date_human(locale='en') }}

その後、このタグは、その日の実際の時間を書き込み

{{ scored_document.fields.10.value|datetimeformat_list(hour=scored_document.fields.17.value|int ,minute =scored_document.fields.18.value|int, timezoneinfo=timezoneinfo, locale=locale) }}

2つの対応する機能は、あなたが `naturaltime`コードを追加するのを忘れ

MONTHS = ('Jan.', 'Feb.', 'Mar.', 'April.', 'May.', 'June.', 
      'July.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.') 
FORMAT = '%H:%M/%d-%m-%Y' 

def format_date_human(to_format, locale='en', timezoneinfo='Asia/Calcutta'): 
    tzinfo = timezone(timezoneinfo) 
    now = datetime.now() 
    #logging.info('delta: %s', str((now - to_format).days)) 
    #logging.info('delta2: %s', str((datetime.date(now)-datetime.date(to_format)).days)) 

    if datetime.date(to_format) == datetime.date(now): 
     date_str = _('Today') 
    elif (now - to_format).days == 1: 
     date_str = _('Yesterday') 
    else: 
     month = MONTHS[to_format.month - 1] 
     date_str = '{0} {1}'.format(to_format.day, _(month)) 
    time_str = format_time(to_format, 'H:mm', tzinfo=tzinfo, locale=locale) 
    return "{0}".format(date_str, time_str) 



def datetimeformat_list(date, hour, minute, locale='en', timezoneinfo='Asia/Calcutta'): 

    import datetime as DT 
    import pytz 

    utc = pytz.utc 
    to_format = DT.datetime(int(date.year), int(date.month), int(date.day), int(hour), int(minute)) 
    utc_date = utc.localize(to_format) 
    tzone = pytz.timezone(timezoneinfo) 
    tzone_date = utc_date.astimezone(tzone) 
    time_str = format_time(tzone_date, 'H:mm') 
    return "{0}".format(time_str) 
関連する問題