将MongoDB时间转换为纪元时间 - Python

1 投票
2 回答
3313 浏览
提问于 2025-04-17 23:51

我有一个MongoDB的时间,格式是 objectid("5217a543dd99a6d9e0f74702")

我想知道怎么把它转换成Python中的纪元时间(epoch time),包括UTC时区和东部标准时间(EST)时区。

2 个回答

0

你可以使用 ObjectId.getTimestamp() 这个方法来获取对象ID中的时间戳部分,并把它转成日期格式。

一旦你得到了这个日期对象,就可以使用日期对象的任何方法来获取你想要的信息。在命令行中,你可以按下TAB键,查看所有可以使用的方法列表:

> var myid = new ObjectId()
> myid
ObjectId("5331ba8163083f9b26efb5b3")
> var mytime = myid.getTimestamp()
> mytime
ISODate("2014-03-25T17:18:57Z")
> mytime.<TAB>
mytime.constructor            mytime.getUTCFullYear(
mytime.getDate(               mytime.getUTCHours(
mytime.getDay(                mytime.getUTCMilliseconds(
mytime.getFullYear(           mytime.getUTCMinutes(
mytime.getHours(              mytime.getUTCMonth(
mytime.getMilliseconds(       mytime.getUTCSeconds(
mytime.getMinutes(            mytime.getYear(
mytime.getMonth(              mytime.hasOwnProperty(
mytime.getSeconds(            mytime.propertyIsEnumerable(
mytime.getTime(               mytime.setDate(
mytime.getTimezoneOffset(     mytime.setFullYear(
mytime.getUTCDate(            mytime.setHours(
mytime.getUTCDay(             mytime.setMilliseconds(

注意:我对Python不太熟悉,但这些概念是相通的。

2

ObjectId.generation_time 可以让你知道这个 ObjectId 是什么时候生成的,时间是以协调世界时(UTC)为准的:

>>> from bson import ObjectId
>>> ObjectId("5217a543dd99a6d9e0f74702").generation_time
datetime.datetime(2013, 8, 23, 18, 9, 7, tzinfo=<bson.tz_util.FixedOffset object at 0x102920c90>)

这里有相关的文档。

如果你想把这个时间转换成东部时间,可以安装 pytz,然后:

>>> import pytz
>>> ny = pytz.timezone('America/New_York')
>>> gt = ObjectId("5217a543dd99a6d9e0f74702").generation_time
>>> ny.normalize(gt.astimezone(ny))
datetime.datetime(2013, 8, 23, 14, 9, 7, tzinfo=<DstTzInfo 'America/New_York' EDT-1 day, 20:00:00 DST>)

撰写回答