Проверьте документацию - datetime
объекты, возвращаемые pymongo, всегда представляют время в UTC, точно так же, как даты, хранящиеся в MongoDB, всегда сохраняются как (то есть предполагается, что в) UTC
pymongo может автоматически преобразовать ваши даты и время в часовой пояс, если вы установите флаг tz_info в True при создании вашего Connection. Затем вы можете использовать метод datetime.astimezone () для преобразования в другой часовой пояс, если хотите.
Так, например, вы можете использовать pytz для часовых поясов или, если вам нужен только EST, напишите свой собственный:
import datetime
class Eastern(datetime.tzinfo):
def utcoffset(self, dt):
return datetime.timedelta(hours=-5)
def tzname(self, dt):
return "EST"
def dst(self, dt):
return datetime.timedelta(0)
EST = Eastern()
Тогда вы можете сделать это:
# Get now for EST
now = datetime.datetime.now(EST)
print now.strftime('%Y-%m-%d %H:%M:%S')
from pymongo import Connection
# Create a timezone aware connection
connection = Connection('localhost', 27017, tz_aware=True)
# Save your data
db = connection.test_database
db.stackoverflow.save({"Type": "reports", "patId": 'JOHNSONGARY', "lastUpdated": now})
doc = db.stackoverflow.find()[0]
print doc['lastUpdated'].astimezone(EST).strftime('%Y-%m-%d %H:%M:%S')
# Confirm they are the same
assert doc['lastUpdated'].astimezone(EST).strftime('%Y-%m-%d %H:%M:%S') == now.strftime('%Y-%m-%d %H:%M:%S')