Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;与格式不匹配";从字符串分析日期时间时出错_Python - Fatal编程技术网

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
with
not 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)