Как найти разницу между двумя датами в 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())
%z
поддерживается только дляstrftime
, а неstrptime
, хотя на некоторых платформах (где базовая функция C это поддерживает) он может работать в любом случае. Если это так, значит, если вы не хотите обновляться до 3.x или использовать стороннюю библиотеку, вам придется отделить tzoffset, проанализировать его самостоятельно и либо (а) настроить время, либо (б) объект часового пояса, предназначенный только для смещения, и примените его, создавая значащие даты и время. - person abarnert   schedule 11.05.2015%z
не работает, потому что это зависит от ОС. Не потому, что это наивный объект. Посмотрите здесь, как исправить stackoverflow.com/questions/1101508/ - person Martin Konecny   schedule 11.05.2015dateutil
, вам будет сложно найти лучший ответ, чем ответ Дж. Ф. Себастьяна для этого ... - person abarnert   schedule 11.05.2015