Вопрос по date – Отображение метки времени в шаблоне Django

14

Мне нужно отобразить отметку времени сообщения в шаблоне Django. Отметка времени будет выглядеть так:

"timestamp":1337453263939 in milli seconds

Я могу преобразовать метку времени в объект datetime и отобразить его в виде. Есть ли прямой способ отображения через шаблон? Выход должен быть:

print(datetime.datetime.fromtimestamp(1337453263.939))
2012-05-20 00:17:43.939000

Ваш Ответ

5   ответов
0

который преобразует вашу строку метки времени в объект datetime. Затем вы можете либо обработать его во что-нибудь читаемое (строку, представляющую ваше время) и вернуть его в свой шаблон, либо просто вернуть объект python datetime и использовать фильтр даты django.

Таким образом, у вас может быть что-то вроде этого {{timestamp_string | convert_to_datetime | date: & amp; D d M Y & apos; }}

Больше на эту тему на:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

24

Вы можете использовать пользовательские шаблоны фильтров (см.https://docs.djangoproject.com/en/dev/howto/custom-template-tags/). In your case it could like this:

Create directory 'templatetags' in application with view, that renders template.

Put into this dir blank file "__init__.py" and "timetags.py" with code:

from django import template
import datetime
register = template.Library()

def print_timestamp(timestamp):
    try:
        #assume, that timestamp is given in seconds with decimal point
        ts = float(timestamp)
    except ValueError:
        return None
    return datetime.datetime.fromtimestamp(ts)

register.filter(print_timestamp)

In your template, add

{% load timetags %}

Use following syntax in template:

{{ timestamp|print_timestamp }}

Where timestamp = 1337453263.939 from your example

Это напечатает метку времени в местном формате даты и времени. Если вы хотите настроить вывод, Вы можете изменить print_timestamp следующим образом:

import time
def print_timestamp(timestamp):
    ...
    #specify format here
    return time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(ts))
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
1

что фильтр даты занимает временные метки, поэтому, если я не наблюдаю за фильтром, вы могли бы просто создать его?

# python
from datetime import datetime

# django
from django import template


register = template.Library()

@register.filter("timestamp")
def timestamp(value):
    try:
        return datetime.fromtimestamp(value)
    except AttributeError, e:
        catch errors..
72
{% now "U" %}

"U" является форматом даты для эпохи Unix, а также может использоваться со встроеннымdate фильтр. Итак, если у вас есть дата в переменной:

Error: User Rate Limit ExceededI.createTimeError: User Rate Limit ExceededDateTimeError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded"U"Error: User Rate Limit ExceededsecondsError: User Rate Limit Exceeded"U"Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededhow to render the timestamp as a date/time stringError: User Rate Limit Exceededhow to render the datetime object as a timestamp.

Похожие вопросы