datetime.strptime格式与格式'%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)

enter image description here

解决方法

您可能需要设置区域设置。 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)
,

这看起来像语言环境设置问题。请参见下面的示例:

>>> 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,0)

您可能需要在要解析的字符串中选择(并可能安装/配置您的基础系统)所用语言。 在示例中,您看到我用葡萄牙语写了字符串“ Julho”(7月),因此必须启用适当的语言环境。

另请参见setting the locale

上的Python文档

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...