форматирование даты в стиле gmail в python - PullRequest
4 голосов
/ 02 августа 2011

Я могу отформатировать дату с помощью strftime в python, но теперь я хочу показать дата в формате относительно текущего времени.

т.е. если дата близка к сегодняшнему дню, покажите во времени.

если это в течение недели, показать как вчера и т. Д.

, если это в течение месяца, просто показать как на прошлой неделе или месяце.

, если оно старше, чем указано в качестве фактического значения.

Я могу сделать это с большим количеством ifs, но есть ли более простой способ сделать это? или библиотека?

Ответы [ 2 ]

6 голосов
/ 02 августа 2011

Там есть библиотека

С документация ,

[python]
>>> from relativeDates import *
>>> import time
>>> x = time.time()-1000
>>> getRelativeTime(x)
'17 minutes ago'
>>> x-=12345
>>> getRelativeTime(x)
'3 hours ago'
>>> x+=543211
>>> getRelativeTime(x)
'in 6 days'
>>> getRelativeTime(x,accuracy=2)
'in 6 days 3 hours'
>>> x-=987661
>>> getRelativeTime(x,accuracy=2)
'5 days 7 hours ago'
>>> getRelativeTime(x,accuracy=2,alternative_past="long long ago")
'long long ago'
>>> getRelativeTimeStr("07/15/06 1823")
'in 4 days'
>>> getRelativeTimeStr("07/10/06 1823")
'7 hours ago'
>>> getRelativeTimeStr("07/10/06 1823",accuracy=2)
'7 hours 30 mins ago'
[/python]
3 голосов
/ 02 августа 2011

django.contrib.humanize.naturaltime

Для значений даты и времени возвращает строку, представляющую, сколько секунд минут или часов назад - возвращаясь к более длинному формату даты, если значение больше, чем дневной. Если значение datetime находится в В будущем возвращаемое значение будет автоматически использовать соответствующую фразу.

Примеры (когда «сейчас» 17 февраля 2007 г. 16:30:00):

17 Feb 2007 16:30:00 becomes now.
17 Feb 2007 16:29:31 becomes 29 seconds ago.
17 Feb 2007 16:29:00 becomes a minute ago.
17 Feb 2007 16:25:35 becomes 4 minutes ago.
17 Feb 2007 15:30:29 becomes an hour ago.
17 Feb 2007 13:31:29 becomes 2 hours ago.
16 Feb 2007 13:31:29 becomes 1 day ago.
17 Feb 2007 16:30:30 becomes 29 seconds from now.
17 Feb 2007 16:31:00 becomes a minute from now.
17 Feb 2007 16:34:35 becomes 4 minutes from now.
17 Feb 2007 16:30:29 becomes an hour from now.
17 Feb 2007 18:31:29 becomes 2 hours from now.
18 Feb 2007 16:31:29 becomes 1 day from now.

Вы можете получить источники здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...