比较两个日期作为字符串

时间:2016-07-31 08:48:11

标签: 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:%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
>>>

这是比较日期的好方法吗?我的意思是你能告诉我一个例子,这段代码不起作用吗?

1 个答案:

答案 0 :(得分:4)

是的 - 使用Python解析日期非常慢,因为日期和时间是complex things。根据{{​​3}} stackoverflow线程,正则表达式可能更快解析。

如果您确实需要解析字符串,我会再次考虑,因为看起来您的数据很干净并且在您的情况下可能有相同的格式。

在采用这种方法之前要记住的事情:

  • 您知道字符串的格式吗?
  • 是否真的从年>月&gt;天&gt;小时&gt;分钟&gt;秒&gt;等
  • 您的所有数据都具有相同的格式吗?
  • 您的所有数据都在同一时区吗?