繁体   English   中英

将UTC本机日期时间转换为pymongo的Eastern tine本地日期时间

[英]Convert UTC native datetime to Eastern tine native datetime for pymongo

我需要查询一个在当地时区(东部)保存日期的mongodb,但我在UTC工作。 如何为pymongo将UTC本机日期时间转换为Eastern tine native datetime,从而节省夏令时?

经过一点点调整后,我发现了这个问题 ,这让我得到了答案。

  1. 将UTC时区设置为本机UTC日期时间
  2. 将其转换为东部时间
  3. 获取UTC的偏移量作为timedelta
  4. 将其添加到原始日期时间
 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM