разница между двумя датами в секундах с часовым поясом с использованием стандартных модулей Python?

Как найти разницу между двумя датами в seconds с timezone только с использованием стандартных модулей Python, таких как datetime, time и т. Д., А не с dateutil, pytz и т. Д. Это не повторяющийся вопрос.

from datetime import datetime
t2 = datetime.strptime('Sun 4 May 2015 13:54:36 -0600', "%a %d %b %Y %H:%M:%S %z")
t1 = datetime.strptime('Sun 4 May 2015 13:54:36 -0000', "%a %d %b %Y %H:%M:%S %z")
diff = (t2 - t1).seconds
print diff

Но это дает мне ошибку, например, ValueError: 'z' is a bad directive in format '%a %d %b %Y %H:%M:%S %z'

Полагаю, это объект naive. Итак, как найти разницу для объекта naive с помощью модуля datetime или time. Нужно ли нам для этого создавать нашу собственную функцию?

Простые входы:

'Sun 10 May 2015 17:56:26 +0430'
'Sat 09 May 2015 15:56:26 +0000'

Если бы я мог так разобрать дату, используя,

from datetime import datetime
t2 = datetime.strptime('Sun 4 May 2015 13:54:36', "%a %d %b %Y %H:%M:%S")
t1 = datetime.strptime('Sun 4 May 2015 13:54:36', "%a %d %b %Y %H:%M:%S")
diff = (t2 - t1).seconds
print diff

Тогда как обрабатывать timezone информацию? Любая подсказка будет полезна.

Я мог бы легко сделать это с помощью модуля dateutil, например

from dateutil import parser
t1 = parser.parse("Sun 4 May 2015 13:54:36 -0600")  
t2 = parser.parse("Sun 4 May 2015 13:54:36 -0000")  
diff = t1 - t2
print int(diff.total_seconds())

person cracker    schedule 11.05.2015    source источник
comment
Я считаю, что в Python 2.x (и ранних 3.x) %z поддерживается только для strftime, а не strptime, хотя на некоторых платформах (где базовая функция C это поддерживает) он может работать в любом случае. Если это так, значит, если вы не хотите обновляться до 3.x или использовать стороннюю библиотеку, вам придется отделить tzoffset, проанализировать его самостоятельно и либо (а) настроить время, либо (б) объект часового пояса, предназначенный только для смещения, и примените его, создавая значащие даты и время.   -  person abarnert    schedule 11.05.2015
comment
%z не работает, потому что это зависит от ОС. Не потому, что это наивный объект. Посмотрите здесь, как исправить stackoverflow.com/questions/1101508/   -  person Martin Konecny    schedule 11.05.2015
comment
@MartinKonecny: Я думаю, это считается дублированием этого вопроса. Несмотря на то, что в вопросе не указывается никаких сторонних библиотек, а в принятом ответе используется dateutil, вам будет сложно найти лучший ответ, чем ответ Дж. Ф. Себастьяна для этого ...   -  person abarnert    schedule 11.05.2015