将MongoDB时间转换为纪元时间 - Python
我有一个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>)