Используйте datetime
модуль вместо:
import datetime
day = datetime.datetime.strptime('Tue Feb 19 00:09:28 +1100 2013', '%a %b %d %H:%M:%S +1100 %Y')
delta = day - datetime.datetime.now()
print delta.days
Вычитание два datetime.datetime
значения возвращает datetime.timedelta
объект, который имеет атрибут days
.
Ваши строки содержат смещение часового пояса, и вы жестко закодировали его для соответствия; если значение меняется, вам придется использовать парсер, который может обрабатывать смещение. python-dateutil
package включает в себя как отличный парсер и часовой пояс поддержки справиться с этим:
>>> from dateutil import parser
>>> parser.parse('Tue Feb 19 00:09:28 +1100 2013')
datetime.datetime(2013, 2, 19, 0, 9, 28, tzinfo=tzoffset(None, 39600))
Обратите внимание, что, поскольку этот результат включает часового пояса, теперь нужно использовать часовой пояс-Aware datetime
объектов при использовании арифметических операций с датами:
>>> from dateutil import tz
>>> import datetime
>>> utcnow = datetime.datetime.now(tz.tzutc())
>>> then = parser.parse('Tue Feb 19 00:09:28 +1100 2013')
>>> utcnow - then
datetime.timedelta(31, 12087, 617740)
>>> (utcnow - then).days
31
Я создал переменную utcnow
в приведенном выше примере, основанном на часовом поясе UTC, прежде чем вычислять, как давно была проанализирована дата.
Это замечательно. Он работал в половине списка. Я тогда столкнулся с этим: Вт Сен 28 11:06:40 +1000 2010 '. Число перед годом отличается от строки в моем примере. Есть ли формат форматирования для этой части даты? – TDNS
@TDNS: Это смещение часового пояса, и Python не поддерживает это (без поддержки временной зоны). Вам придется использовать внешний модуль для разбора этой части; пакет '' python-dateutil' (http://labix.org/python-dateutil) имеет отличный парсер. –
Я написал для него уродливый взлом. Прости меня, я все еще учусь. – TDNS