'Create a dummy ObjectId instance with a specific generation time.
This method is useful for doing range queries on a field
containing :class:`ObjectId` instances.
.. warning::
It is not safe to insert a document containing an ObjectId
generated using this method. This method deliberately
eliminates the uniqueness guarantee that ObjectIds
generally provide. ObjectIds generated with this method
should be used exclusively in queries.
`generation_time` will be converted to UTC. Naive datetime
instances will be treated as though they already contain UTC.
An example using this helper to get documents where ``"_id"``
was generated before January 1, 2010 would be:
>>> gen_time = datetime.datetime(2010, 1, 1)
>>> dummy_id = ObjectId.from_datetime(gen_time)
>>> result = collection.find({"_id": {"$lt": dummy_id}})
:Parameters:
- `generation_time`: :class:`~datetime.datetime` to be used
as the generation time for the resulting ObjectId.'

@classmethod
def from_datetime(cls, generation_time):

    if (generation_time.utcoffset() is not None):
        generation_time = (generation_time - generation_time.utcoffset())
    timestamp = calendar.timegm(generation_time.timetuple())
    oid = (struct.pack('>i', int(timestamp)) + '\x00\x00\x00\x00\x00\x00\x00\x00')
    return cls(oid)
