Python: ValueError: time data '2021:6:22' does not match format '%Y:-%m:-%d'

Всем привет.

Подскажите, пожалуйста, почему вываливается такая ошибка при попытке перевести string в datetime?

ValueError: time data '2021:6:22' does not match format '%Y:-%m:-%d'

Сам перевод организовываю так:

count_data_for_interval_clicks_dict = [{'count': int(row[0]), 'date': datetime.strptime(str(int(row[1]))+':'+str(int(row[2]))+':'+str(int(row[3])), '%Y:-%m:-%d')} for row in count_data_for_interval_clicks.all()][:10]

Когда использую такое: '%Y:%-m:%-d', то он пишет, что '-' is a bad directive in format '%Y:%-m:%-d'.

Но вроде как в документации указано, что я могу использовать %-m, %-d, если Month as a decimal number и Day of the month as a decimal number соответственно, как в моем случае.


Ответы (1 шт):

Автор решения: Tehnorobot

Ваша ошибка в том, что вы неправильно преобразовываете строку в datetime-формат. Вы пишите: '%Y:%-m:%-d', а должно быть: '%Y:%m:%d'.

Пример:

from datetime import datetime

date_time_str = '2018:6:29 08:15:27.243860'
date_time_obj = datetime.strptime(date_time_str, '%Y:%m:%d %H:%M:%S.%f')
print(date_time_obj)
→ Ссылка