python中支持夏时制的时间戳转换

python中支持夏时制的时间戳转换,python,datetime,timezone,pytz,Python,Datetime,Timezone,Pytz,给定不带时区的时间戳(例如,2018-03-12 09:30:00)和时区EST5EDT,目标是解析返回时区和夏令时感知的日期时间对象的数据 from datetime import datetime import pytz datetime(2018, 3, 8, 9, 30, tzinfo=pytz.timezone('EST5EDT')).astimezone(pytz.utc) # returns: # datetime.datetime(2018, 3, 8, 14, 30, tzi

给定不带时区的时间戳(例如,
2018-03-12 09:30:00
)和时区
EST5EDT
,目标是解析返回时区和夏令时感知的日期时间对象的数据

from datetime import datetime
import pytz

datetime(2018, 3, 8, 9, 30, tzinfo=pytz.timezone('EST5EDT')).astimezone(pytz.utc)
# returns:
# datetime.datetime(2018, 3, 8, 14, 30, tzinfo=<UTC>)

datetime(2018, 3, 12, 9, 30, tzinfo=pytz.timezone('EST5EDT')).astimezone(pytz.utc)
# returns:
# datetime.datetime(2018, 3, 12, 14, 30, tzinfo=<UTC>)
# BUT should return (second Sunday of march the daylight saving changes by 1 hour):
# datetime.datetime(2018, 3, 12, 13, 30, tzinfo=<UTC>)
从日期时间导入日期时间
进口皮茨
datetime(2018,3,8,9,30,tzinfo=pytz.timezone('EST5EDT')).astimezone(pytz.utc)
#返回:
#datetime.datetime(2018,3,8,14,30,tzinfo=)
datetime(2018,3,12,9,30,tzinfo=pytz.timezone('EST5EDT')).astimezone(pytz.utc)
#返回:
#datetime.datetime(2018,3,12,14,30,tzinfo=)
#但应返回(3月第二个星期日夏时制更改1小时):
#datetime.datetime(2018,3,12,13,30,tzinfo=)

在创建日期时间时,切勿直接设置
tzinfo
。始终使用时区的
localize()
方法(请参见本章顶部的注释):


创建日期时间时,切勿直接设置
tzinfo
。始终使用时区的
localize()
方法(请参见本章顶部的注释):

pytz.timezone('EST5EDT').localize(
    datetime(2018, 3, 12, 9, 30)
).astimezone(pytz.utc)