Я знаю, что есть некоторые сообщения об использовании timedelta
объектов в Python и Python doc достаточно ясно, чтобы все понять. Но я ничего не могу понять. Давайте предположим, что у нас есть две даты:Timedeltas in Python
t1 = 'Fri 11 Feb 2078 00:05:21 +0400'
t2 = 'Mon 29 Dec 2064 03:33:48 -1100'
Я разобран как t1
и t2
используя код ниже, чтобы найти разницу между ними в секундах:
def offset(arg):
return timedelta(hours = arg/100, minutes = arg % 100)
def normalize(time, offset, sign):
return time+offset if sign == '-' else time-offset
def main():
t1offset = offset(int(t1[-5:]))
t2offset = offset(int(t2[-5:]))
t1 = normalize(datetime.strptime(t1[:-6],
"%a %d %b %Y %H:%M:%S"), t1offset, t1[-5])
t2 = normalize(datetime.strptime(t2[:-6],
"%a %d %b %Y %H:%M:%S"), t2offset, t2[-5])
if t1>t2:
print (t1-t2).total_seconds()
elif t2>t1:
print (t2-t1).total_seconds()
else:
print 0
Правильный ответ |t1-t2| = 413962293
в то время как мой результат 414041493
. Это разница в 79200 секунд -> 22 часа. Что я делаю не так? Что я пропустил или что я должен решить для решения этой проблемы?
Кто голосовал его закрыть, это совершенно правильный вопрос с достаточным количеством кода легко воспроизвести проблему. – Andrey
@ Andrey, но это не * минимальный * код для воспроизведения проблемы (см. [Mcve]), поскольку OP не выполнил базовую двоичную отладочную поиск. – jonrsharpe
Код @jonrsharpe не совсем минимален, но достаточно мал, не идеален, но хорошо понимать проблему. Этот вопрос не так уж плох, чтобы его можно было закрыть. – Andrey