python数据处理——bsonId与时间戳的相互转换

使用背景:

       在不覆盖_id的情况下,mongoDB会根据时间生成对应的bsonId。可以根据bsonId来知道数据的入库时间。下面是实现bsonId与时间戳的相互转换

import datetime
import time
from bson import ObjectId


def timestamp_from_objectid(objectId):
    """
    bson_objectId 转化为 时间戳

    :param objectid: bson_objectId
    :return: 时间戳(秒级)
    """
    result = 0
    try:
        result = time.mktime(objectId.generation_time.timetuple())
    except:
        pass
    return result


def general_obj_from_time(timestamp=None, time_delta=None):
    """
    时间戳 转化为 bson_objectId

    :param from_datetime: 时间元组
    :param time_delta: 是datetime.timedelta类型,可以进行时间的加减运算
    :return:
    """
    from_datetime = datetime.datetime.fromtimestamp(timestamp)
    if from_datetime is None or not isinstance(from_datetime, datetime.datetime):
        from_datetime = datetime.datetime.now()
    if time_delta:
        from_datetime = from_datetime + time_delta
    return ObjectId.from_datetime(from_datetime)

# 使用案例
if __name__ == '__main__': print(general_obj_from_time(1624809600)) print(timestamp_from_objectid(ObjectId("60d911000000000000000000")))

 

posted @ 2021-07-07 21:47  羽墨1110  阅读(265)  评论(0编辑  收藏  举报