datetime.strptime 格式与格式“%d. %经过'

datetime.strptime Format does not match format '%d. %B %Y'

我想将字符串日期类型转换为其他格式,如 dd-mm-yyyy

date_stringg='24. Juli 2020'

date_object = datetime.strptime((date_stringg), "%d. %B %Y")

print("date_object: ", date_object)

这看起来像是区域设置问题。请参阅以下示例:

>>> locale.setlocale(locale.LC_ALL, 'C')
'C'
>>> datetime.datetime.strptime('24. Julho 2020', '%d. %B %Y')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.8/_strptime.py", line 568, in _strptime_datetime
    tt, fraction, gmtoff_fraction = _strptime(data_string, format)
  File "/usr/local/lib/python3.8/_strptime.py", line 349, in _strptime
    raise ValueError("time data %r does not match format %r" %
ValueError: time data '24. Julho 2020' does not match format '%d. %B %Y'
>>> locale.setlocale(locale.LC_ALL, 'pt_PT.utf8')
'pt_PT.utf8'
>>> datetime.datetime.strptime('24. Julho 2020', '%d. %B %Y')
datetime.datetime(2020, 7, 24, 0, 0)

您可能需要 select(可能 install/configure 您的底层系统)您在要解析的字符串中使用的语言。 在您看到的示例中,我用葡萄牙语编写了字符串 'Julho' (July),因此必须激活正确的语言环境。

另请参阅 setting the locale

上的 Python 文档

您可能需要设置语言环境。 Juli 不是有效的英语月份名称,我假设它是荷兰语。

假设您想要将荷兰语语言环境与日期时间一起使用,您可以执行以下操作

import locale
locale.setlocale(locale.LC_TIME, "nl_nl")

之后,它会识别 Juli 所以这会起作用

>>> date_stringg='24. Juli 2020'
>>> 
>>> date_object = datetime.strptime((date_stringg), "%d. %B %Y")
>>> date_object
datetime.datetime(2020, 7, 24, 0, 0)