Python &引用;与格式不匹配";从字符串分析日期时间时出错
试图从字符串分析时间,但出现此错误。尝试了一些格式化字符串 错误: 代码:Python &引用;与格式不匹配";从字符串分析日期时间时出错,python,Python,试图从字符串分析时间,但出现此错误。尝试了一些格式化字符串 错误: 代码: 您的格式中有引号。把那些拿出来 dt = datetime.strptime(strdt, '%m/%d/%Y %H:%M:%S') 尝试从格式“%m/%d/%Y%H:%m:%S”->“%m/%d/%Y%H:%m:%S”中删除引号,或者您可以使用: 请注意,默认情况下,parser.parse将10/2/2010解释为MM/D/YYYY格式 如果字符串的日期在该月的前一天,则使用 parser.parse("10/2
您的格式中有引号。把那些拿出来
dt = datetime.strptime(strdt, '%m/%d/%Y %H:%M:%S')
尝试从格式“%m/%d/%Y%H:%m:%S”->“%m/%d/%Y%H:%m:%S”中删除引号,或者您可以使用:
请注意,默认情况下,
parser.parse
将10/2/2010
解释为MM/D/YYYY
格式
如果字符串的日期在该月的前一天,则使用
parser.parse("10/2/2010", dayfirst = True)
还有第一种选择;有关详细信息,请参阅。您必须在小时内使用两个数字。说句公道话@metalarin,当有人试图解析日期时间字符串时,他们通常在格式上没有太多选择。@metalarin它在实践中似乎更宽容,我测试得很好。但这可能取决于您的平台。dateutil如何解决
m/d
与d/m
之间的矛盾m/d
在美国非常普遍,而d/m
似乎是其他地方的标准。@Markransem:从“每当发现不明确的日期时,dayfirst
和yearfirst
参数将控制信息的处理方式。”默认值为dayfirst=False
,意思是“在日期不明确的情况下,MM-DD-YYYY格式将优先于DD-MM-YYYY。“我认为在回答中指出这个细节很重要,因为这会让非美国开发者感到惊讶。@Markransem:除了许多亚洲国家,那里的日期通常是m/d,因为整体格式是y/m/d.。dateutil.parse
withnot dayfirst and not yearfirst
与m/d/y不太一样,尤其是如果您不能信任您的数据(考虑到OP试图解析的字符串,这似乎是合理的)。特别是,如果您的输入中出现类似于“13/6/2010”的内容,您可能希望出现错误,但您将得到6月13日。另一方面,您可能想要6月13日,因为您使用它作为非常宽容的GUI界面的一部分,在这种情况下,dateutil更好。OP应该根据你想做什么来选择,而不是他可以先做什么。为了验证这一点:如果你设置了strdt='“10/2/2010 0:00:00”
原始版本可以工作,而这个版本不能。正如文档所述,每个非格式字符都被视为必须精确匹配的文本,因此这些引号必须精确匹配。
dt = datetime.strptime(strdt, '%m/%d/%Y %H:%M:%S')
In [68]: import dateutil.parser as parser
In [69]: parser.parse('10/2/2010 0:00:00')
Out[69]: datetime.datetime(2010, 10, 2, 0, 0)
parser.parse("10/2/2010", dayfirst = True)