我正在尝试从ObjectID获取时间戳,但Mongo一直给我这个错误。我错过了一个导入?将时间戳转换为标准日期格式的最佳方法是什么?
video['date'] = video['_id'].getTimeStamp()
答案 0 :(得分:39)
答案 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