Как исправить ошибку ValueError: временные данные ’18/02/2020 20:14:31′ не соответствуют формату ‘%d /% m /%y% H:%M:% S’ в Python?

#python #python-3.x #date

#питон #python-3.x #Дата

Вопрос:

Я разрабатываю веб-приложение с помощью Flask Python. У меня есть таблица Mysql с текстовым столбцом дата:

 -- date --
10/06/2020 18:50:17
10/06/2020 18:55:10
28/05/2020 22:18:06
29/03/2020 20:47:01
29/03/2020 21:29:14
 

Приведенные выше данные представляют собой дату в строковом формате.
Мне нужно преобразовать эти строковые даты в форматные даты.

Я сделал это на python :

 actions = Action.query.all() # This is SQLAlchemy request to get all the rows of table 'Action'
for action in actions:
    date=action.date
    # convert this date string in date format
    date_time_obj = datetime.strptime(date, '%d/%m/%y %H:%M:%S')
    print(date_time_obj)
 

Но я получаю этот вывод ошибки:

 Traceback (most recent call last):
  File "j:/Dropbox/cff/Python/folder/test.py", line 18, in <module>
    date_time_obj = datetime.strptime(date, '%d/%m/%y %H:%M:%S')
  File "C:UsersNinoAppDataLocalProgramsPythonPython37lib_strptime.py", line 577, in _strptime_datetime
    tt, fraction, gmtoff_fraction = _strptime(data_string, format)
  File "C:UsersNinoAppDataLocalProgramsPythonPython37lib_strptime.py", line 359, in _strptime
    (data_string, format))
ValueError: time data '18/02/2020 20:14:31' does not match format '%d/%m/%y %H:%M:%S'
 

Я не понимаю, как ’18/02/2020 20:14:31′ идеально соответствует формату ‘%d /% m /%y% H:%M:%S’

Что не так в моем коде? Я что-то пропустил?

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

1. %y является годом без столетия в виде десятичного числа с добавлением нуля. Вы должны использовать %Y

Ответ №1:

Ваш формат даты должен быть

 from datetime import datetime
datetime.strptime(date, '%d/%m/%Y %H:%M:%S')
 

(с Y в верхнем регистре)

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

1. Так быстро!!! «Я не могу принять ответ раньше, чем через 12 минут», — сказал stackoverflow 🙂 ….

2. Это было совпадение. Я загрузил SO, нашел вашу проблему, на которую я мог ответить, и я это сделал, вот и все 🙂