Преобразование строки в дату/час на 24-часовой отметке: непреобразованные данные ValueError остаются: 4

Я пытаюсь извлечь дату и час из следующей строки:

string = '3/24/2016 24'     # 24 is the hour

Используя следующий код:

result = datetime.strptime(string, '%m/%d/%Y %H')

Однако я сталкиваюсь со следующим сообщением об ошибке: ValueError: непреобразованные данные остаются: 4 Lead: Strptime не распознает 24 часа (0 -> 23 по сравнению с 1 -> 24)? И если да, то как мне это исправить, если это строка?


person John12    schedule 24.08.2016    source источник


Ответы (1)


Я предполагаю, что для обработки углового случая 24 вы можете проанализировать часть даты как дату, а затем заменить «час» мод 24, например:

d, t = '3/24/2016 24'.partition(' ')[::2]
dt = datetime.strptime(d, '%m/%d/%Y').replace(hour=int(t) % 24)
# datetime.datetime(2016, 3, 24, 0, 0)
person Jon Clements♦    schedule 24.08.2016