'ObjectId'对象没有属性'getTimeStamp'

时间:2012-08-14 22:52:04

标签: python mongodb pymongo

我正在尝试从ObjectID获取时间戳,但Mongo一直给我这个错误。我错过了一个导入?将时间戳转换为标准日期格式的最佳方法是什么?

video['date'] = video['_id'].getTimeStamp()

3 个答案:

答案 0 :(得分:39)

您在哪里看到getTimeStamp()作为方法?

根据docs它应该是:

video['date'] = video['_id'].generation_time

答案 1 :(得分:1)

此答案基于python和Django。
在使用generation_time之前,请注意generation_time转换为UTC (世界时间),该时间可能会晚于或晚于当前时区,因此,如果您在项目设置中使用本地时间进行保存,则可能会看到时间上的差异对象上的时间戳。对我来说,相差5.5小时。因此,请根据您的时区调整时间。

示例: 对于ObjectId('5c51aca67c76124020edbbaf'),此对象的实际创建时间为datetime.datetime(2019, 1, 30, 19, 24, 28, 73000) 但是当我使用generation_time花费时间时,它落后了5.5小时。

In [10]: from bson import ObjectId

In [11]: ObjectId('5c51aca67c76124020edbbaf').generation_time
Out[11]: datetime.datetime(2019, 1, 30, 13, 54, 46, tzinfo=<bson.tz_util.FixedOffset object at 0x102461128>)

答案 2 :(得分:0)

由于我们从文档的object_id中获取了UTC时间,因此要转换为本地时间,您可以做的就是...

document['_id'].generation_time  #(gives the generation/creation time of the object id in UTC.)
utc=document['_id'].generation_time
hours_added = datetime.timedelta(hours = 4)`  #(Suppose utc+4 is my local time.)
local_time=utc+hours_added  
相关问题