Почему python неправильно конвертирует эти строки даты и времени? - PullRequest
0 голосов
/ 26 июня 2019

Взгляните на следующий бездействующий сеанс:

>>> from datetime import datetime
>>> timeFmtPy = '%m/%d/%Y %H:%M:%S %p'
>>> d = lambda y:datetime.strptime(y, timeFmtPy)
>>> t1 = d('6/2/2019 12:48:10 AM')
>>> t2 = d('6/2/2019 1:05:17 AM')
>>>
>>> (t2-t1)
datetime.timedelta(days=-1, seconds=44227)
>>> 44227/3600
12.285277777777777
>>> (t2-t1).total_seconds()
-42173.0

Ясно, что t2 позже t1.Кто-нибудь знает, почему разница отрицательна, когда она должна быть положительной?

1 Ответ

3 голосов
/ 26 июня 2019

Вы указываете время в 12-часовом формате, поэтому %H должно было быть %I.

f = lambda y: datetime.strptime(y, '%m/%d/%Y %I:%M:%S %p')
t1 = f('6/2/2019 12:48:10 AM')
t2 = f('6/2/2019 1:05:17 AM')

t2 > t1
# True

См. http://strftime.org для удобного списка спецификаторов формата времени.

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