我需要查询一个mongodb,它将日期保存在本地时区(东部),但我正在使用UTC。如何为pymongo将UTC本机日期时间转换为Eastern tine native datetime,以节省夏令时?
答案 0 :(得分:1)
经过一点点调整之后,我找到了this question,这让我得到了答案。
ET = pytz.timezone("America/New_York") def utc_to_et(utcdt): utc_with_tz = utcdt.replace(tzinfo=pytz.UTC) offset = utc_with_tz.astimezone(ET).utcoffset() return utcdt + offset
答案 1 :(得分:1)
将表示UTC时间的天真日期时间对象转换为不同的时区:
from datetime import datetime
import pytz
tz = pytz.timezone('US/Eastern') #NOTE: deprecated timezone name
naive_utc_dt = datetime.utcnow() # naive datetime object
utc_dt = naive_utc_dt.replace(tzinfo=pytz.utc) # aware datetime object
east_dt = utc_dt.astimezone(tz) # convert to Eastern timezone
naive_east_dt = east_dt.replace(tzinfo=None) #XXX use it only if you have to
注意:如果源时区不是UTC,则应使用.localize()
,.normalize()
方法。
pytz
允许您处理给定区域的utc偏移更改(不仅仅是由于DST):今天,过去(许多库在这里失败)。
答案 2 :(得分:0)
我不确定这是不是你的意思:
http://docs.python.org/2/library/datetime.html#datetime.datetime.astimezone
它允许您将 datetime 从一个时区更改为另一个时区。
答案 3 :(得分:0)
另请注意,如果Mongo连接没有打开,因为时区知道你只是从数据库中获得了天真的日期时间。
from pymongo import Connection
# Create a timezone aware connection
connection = Connection('localhost', 27017, tz_aware=True)