Python 将两个日期作为字符串进行比较

Python 将两个日期作为字符串进行比较,python,datetime,Python,Datetime,我需要用python在每一行数据上比较服务器中的两个日期。在本例中,我使用了datetime,但由于一些限制,它将在大数据上花费大量时间。我使用以下代码创建了一个datetime对象,并进一步使用: first_date = datetime.strptime(line_content[3], '%Y-%m-%dT%H:%M:%S.000000Z') second_date = datetime.strptime(line_content[4].strip(), '%Y-%m-%dT%H:%M

我需要用python在每一行数据上比较服务器中的两个日期。在本例中,我使用了
datetime
,但由于一些限制,它将在大数据上花费大量时间。我使用以下代码创建了一个
datetime
对象,并进一步使用:

first_date = datetime.strptime(line_content[3], '%Y-%m-%dT%H:%M:%S.000000Z') 
second_date = datetime.strptime(line_content[4].strip(), '%Y-%m-%dT%H:%M:%S.000000Z')
我希望将日期与其字符串进行比较,并且不使用
datetime
,如果这样做,将大大减少此类数据的时间成本。因此,请在python中使用以下测试:

>>> "2016-07-28T06:04:12.000000Z" < "2016-04-28T06:04:13.000000Z"
False
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T06:04:13.000000Z"
True
>>>
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T06:04:11.000000Z"
False
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T06:04:12.000000Z"
False
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T07:04:12.000000Z"
True
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T06:04:12.000000Z"
False
>>>
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-26T06:04:12.000000Z"
False
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-29T06:04:12.000000Z"
True
>>> "2016-07-28T06:04:12.000000Z" < "2016-07-28T06:04:12.000000Z"
False
>>>
>>“2016-07-28T06:04:12.000000Z”<“2016-04-28T06:04:13.000000Z”
假的
>>>“2016-07-28T06:04:12.000000Z”<“2016-07-28T06:04:13.000000Z”
真的
>>>
>>>“2016-07-28T06:04:12.000000Z”<“2016-07-28T06:04:11.000000Z”
假的
>>>“2016-07-28T06:04:12.000000Z”<“2016-07-28T06:04:12.000000Z”
假的
>>>“2016-07-28T06:04:12.000000Z”<“2016-07-28T07:04:12.000000Z”
真的
>>>“2016-07-28T06:04:12.000000Z”<“2016-07-28T06:04:12.000000Z”
假的
>>>
>>>“2016-07-28T06:04:12.000000Z”<“2016-07-26T06:04:12.000000Z”
假的
>>>“2016-07-28T06:04:12.000000Z”<“2016-07-29T06:04:12.000000Z”
真的
>>>“2016-07-28T06:04:12.000000Z”<“2016-07-28T06:04:12.000000Z”
假的
>>>

这是比较日期的好方法吗。我的意思是,你能给我举个例子,说明这段代码不起作用吗?

是的-用Python解析日期非常慢,因为日期和时间都很复杂。根据stackoverflow线程的说法,正则表达式的解析速度可能更快

如果您真的需要解析字符串,我会再次考虑,因为看起来您的数据是干净的,并且在您的案例中具有相同的格式,这可能会起作用

在使用此方法之前,请记住以下事项:

  • 你知道你的字符串的格式吗
  • 它真的是从年>月>日>小时>分钟>秒>等等开始的吗
  • 您的所有数据是否具有相同的格式
  • 您的所有数据都在同一时区

这既不是一种好方法,也不是一种有效的方法。Python以字典形式比较字符串。构建
datetime
对象不应该成为性能瓶颈。您确定这是问题的原因吗?@DeepSpace但如果日期的格式都相同,不是吗?@DeepSpace:因此一个明显不起作用的示例不会有零填充。您能指出
strtime
什么时候会这样做吗?如果时间都已经本地化,并且都看起来与您显示的完全一样(都有前导零,没有时区偏移等),那么比较字符串将与比较通过解析这些字符串创建的两个
datetimes
相同。