我正在解析原子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()
然后与之前的时间进行比较。
答案 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