Под “относительной датой” я подразумеваю вывод даты следующим образом: 5 минут назад, вчера, 7 дней назад, завтра и т.д. (Не уверен, что это правильный термин, но ничего лучше в голову не приходит).
В Django для этого есть функция timesince, однако она не умеет склонять по-русски единицы измерения времени. Например, она может выдать “4 дней, 15 часов назад”. Поэтому для вывода относительной даты на русском я использую функцию distance_of_time_in_words
из библиотеки Pytils, написанной программистом Юрием Юревичем.
Установка:
pip install pytils
Пример использования:
import time
from pytils import dt
past = time.time() - 172800
print dt.distance_of_time_in_words(past)
#-> позавчера
Tz-aware использование в Django:
import datetime
from pytils import dt
from django.utils.timezone import utc
now = datetime.datetime.utcnow().replace(tzinfo=utc)
dt.distance_of_time_in_words(some_date, 1, now)
PS: Не забудьте “лайкнуть” библиотеку на GitHub.