convert 'July 31, 2021' to YYYY-MM-DD format caused ValueError: time data 'July 31, 2021' does not match format '%m %d, %Y'

convert 'July 31, 2021' to YYYY-MM-DD format caused ValueError: time data 'July 31, 2021' does not match format '%m %d, %Y'

我有一个网络应用程序,使用 Django 作为后端。 我在python3中使用datetime.strptime函数将日期转换为需要输入到Mysql数据库的格式。 但是我得到了错误:ValueError: time data 'July 31, 2021' does not match format '%m %d, %Y'

end_date = request.GET.getlist('end_date')[0]   # end_date = 'July 31, 2021' in the test case
end_date_converted = datetime.strptime(end_date, "%m %d, %Y").strftime("%Y-%m-%d")

如何将 'July 31, 2021' 格式转换为 YYYY-MM-DD 格式以便将其保存到 MYSQL 日期列?

根据 docs %m“作为零填充十进制数的月份”,而不是月份名称。你应该使用

%B %d, %Y

作为格式说明符。例如:

>>> datetime.strptime('July 31, 2021', '%B %d, %Y').strftime('%Y-%m-%d')
'2021-07-31'

将 %m 替换为 %B,这将解码月份全名