Строка даты в формате Datetime Python

#python #datetime

#python #datetime

Вопрос:

Вот моя ошибка, которую мне не удается решить

 ValueError: time data '1/31/2021 22:59' does not match format '%d/%m/%Y %H:%M:%S'
 

Вот мой код
В 90% случаев моя строка date, которую мне нужно преобразовать, входит в мою try часть, и это работает, у меня проблема со второй частью.

 def StringToDateTime(DateString):
    from datetime import datetime
    try:
        return datetime.strptime(DateString, '%Y-%m-%d %H:%M:%S')
    except:
        DateString = str(DateString) ':00'
        return datetime.strptime(DateString, '%d/%m/%Y %H:%M:%S')
 

Комментарии:

1. вы хотите '%m/%d/%Y %H:%M' , чтобы месяц, очевидно, был первым в вашей строке, и у него нет второго

2. Боже, конечно, большое спасибо, я устал 🙂

Ответ №1:

Ошибка, которую вы видите, связана с str отсутствием значения секунд — строки %S формата datetime.

Измените строку формата, чтобы в ней не было заполнителя seconds, и она должна работать должным образом:

 try:
    # Remove the %S from the format string here
    return datetime.strptime(DateString, '%Y-%m-%d %H:%M')

except:
    DateString = str(DateString) ':00'
    return datetime.strptime(DateString, '%d/%m/%Y %H:%M:%S')
 

Или, если вы хотите изменить DateString , как вы делаете в своем except предложении:

 # Add the seconds to the date string
DateString = f"{DateString}:00"

try:
    return datetime.strptime(DateString, '%Y-%m-%d %H:%M:%S')
except:
    return datetime.strptime(DateString, '%d/%m/%Y %H:%M:%S')