0

我正在解析一个原子提要。提要中有一个更新的标签。它的值为2012-05-20T02:24:56Z。我以这种方式将此信息插入到表中。

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

之后,我从表中获取值并以这种方式将其转换为日期时间

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 进行比较以检查提要是否有任何新条目时,我的比较给出了我无法理解的输出。

print testFeed.feed.updated == lastUpdatedTime

这将返回错误打印 testFeed.feed.updated > lastUpdatedTime

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

数据库中的列是文本类型。

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()然后与以前的时间进行比较后工作。

4

1 回答 1

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
于 2012-05-20T16:55:20.467 回答