с использованием метки времени unix генерировать timedelta для format_timedelta babel - PullRequest
0 голосов
/ 29 марта 2012

Я не уверен, что правильно сформулировал, но python и время меня всегда смущают. Это то, что я пытаюсь. Учитывая временную метку Unix (INT), которая определенно находится в прошлом (может быть несколько секунд назад или несколько лет назад), я хочу создать babel format_timedelta

Моя проблема

  1. Babel format_timedelta принимает timedelta в качестве первого аргумента
  2. поэтому я думаю, мне нужно сгенерировать timedelta, используя time.time () (сейчас) и временную метку unix, которая у меня есть.

Я не могу понять часть 2, и я считаю, что должен быть более простой / правильный способ сделать это. Пожалуйста, поделитесь наилучшим возможным способом сделать это, также мне нужно, чтобы он был быстрым в расчете, так как я должен использовать его на веб-странице.

def format_starttime(value, granularity="day"):
 delta = datetime.timedelta(seconds=time.time() - value)
 return format_timedelta(delta, granularity)

выдает ошибку в date.format_timedelta () AttributeError: у объекта 'module' нет атрибута 'format_timedelta'

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Разница между двумя datetime экземплярами составляет timedelta экземпляр.

from datetime import datetime
from babel.dates import format_timedelta
delta = datetime.now() - datetime.fromtimestamp(your_timestamp)
print format_timedelta(delta, locale='en_US')

См. datetime документацию к модулю для получения подробной информации и дополнительных примеров.

1 голос
/ 29 марта 2012
import datetime

td = datetime.timedelta(seconds=time.time()-a_unix_timestamp)
...