[英]Convert UTC native datetime to Eastern tine native datetime for pymongo
我需要查询一个在当地时区(东部)保存日期的mongodb,但我在UTC工作。 如何为pymongo将UTC本机日期时间转换为Eastern tine native datetime,从而节省夏令时?
经过一点点调整后,我发现了这个问题 ,这让我得到了答案。
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
要将表示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):今天,过去(许多库在这里失败)。
我不确定这是不是你的意思:
http://docs.python.org/2/library/datetime.html#datetime.datetime.astimezone
它允许您将日期时间从一个时区更改为另一个时区。
另请注意,如果没有打开Mongo连接,因为时区知道你只是从数据库中获得了天真的日期时间。
from pymongo import Connection
# Create a timezone aware connection
connection = Connection('localhost', 27017, tz_aware=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.