有人可以解释为什么这个日期时间比较显示输出在python中的方式?

时间:2012-05-20 15:56:43

标签: python datetime

我正在解析原子Feed。 Feed中有更新的标记。它的价值是 2012-05-20T02:24:56Z 。我以这种方式将这些信息插入表中。

cursor.execute('Insert into Timing (LastUpdatedTime) Values(?)',
                (testFeed.feed.updated,))

之后我从table中获取值并以这种方式将其转换为datetime

cursor.execute("Select LastUpdatedTime from Timing")
lastUpdatedTime=datetime.strptime(list(cursor.fetchone())[0],
                '%Y-%m-%dT%H:%M:%SZ').isoformat()

lastUpdatedTime的值为 2012-05-20T02:24:56

现在,当我将testFeed.feed.updated的值与lastUpdatedTime进行比较时,检查Feed是否有任何新条目,我的比较是给出了我无法理解的输出。

print testFeed.feed.updated == lastUpdatedTime

返回false     print testFeed.feed.updated> lastUpdatedTime

返回true。 比较时的变量值: testFeed.feed.updated = 2012-05-20T02:24:56Z lastUpdatedTime = 2012-05-20T02:24:56

数据库中的列是text类型。

testFeed.feed.updated的类型是unicode

lastUpdatedTime的类型是字符串

使用python 2.7.2,处理Ubuntu 11.10

将unicode对象转换为datetime后,它可以正常工作 currentFeedTime=datetime.strptime(str(testfeed.feed.updated),'%Y-%m-%dT%H:%M:%SZ').isoformat()然后与之前的时间进行比较。

1 个答案:

答案 0 :(得分:1)

你所看到的行为对我有意义,因为testFeed.feed.updated最后有一个额外的'Z'。

话虽如此,如果您正在进行日期/时间比较,我认为您最好将这两个日期转换为datetime.datetime,这样就可以了:

lastUpdatedTime

cursor.execute("Select LastUpdatedTime from Timing")
# Note that I'm not converting this to a string.
lastUpdatedTime=datetime.strptime(list(cursor.fetchone())[0],'%Y-%m-%dT%H:%M:%SZ')

而不是testFeed.feed.updated

feedUpdatedTime=datetime.strptime(testFeed.feed.updated,'%Y-%m-%dT%H:%M:%SZ')

然后比较两者:

print feedUpdatedTime == lastUpdatedTime