Python 如何强制pytz使用当前的标准时区?

Python 如何强制pytz使用当前的标准时区?,python,datetime,timezone,pytz,Python,Datetime,Timezone,Pytz,考虑以下几点: 从日期时间导入日期时间 进口皮茨 纽约的新年份=日期时间( 年份=2020年, 月份=1, 天=1, 小时=0, 分钟=0, tzinfo=pytz.时区(“美国/东部”) 现在我有一个datetime对象,表示纽约的1月1日午夜。奇怪的是,如果我使用pytz将其转换为UTC,我将获得几分钟的奇数datetime: new_years_in_new_york.astimezone(pytz.utc) #datetime.datetime(2020,1,1,4,56,tzinfo

考虑以下几点:

从日期时间导入日期时间
进口皮茨
纽约的新年份=日期时间(
年份=2020年,
月份=1,
天=1,
小时=0,
分钟=0,
tzinfo=pytz.时区(“美国/东部”)
现在我有一个datetime对象,表示纽约的1月1日午夜。奇怪的是,如果我使用pytz将其转换为UTC,我将获得几分钟的奇数datetime:

new_years_in_new_york.astimezone(pytz.utc)
#datetime.datetime(2020,1,1,4,56,tzinfo=)
请注意,纽约的午夜(pytz)是UTC的4:56。在堆栈溢出的其他地方,我了解到这是因为数据,它在标准化之前使用本地平均时间来解释时区。这可以显示在这里:

pytz.时区(“美国/东部”)
# 
查看
LMK-1天,标准时间19:04:00
?这是当地的平均时间偏移量,不是我想要的偏移量,是美国/东部,不是在夏令时

有没有办法强迫pytz使用基于当前日期的当前标准偏移集?在2020年新年,它应该是UTC-5。如果我提供的日期是夏令时,我希望UTC-4。我不明白为什么pytz会在2020年使用基于LMT的补偿

>>> new_years_in_new_york
datetime.datetime(2020, 1, 1, 0, 0, tzinfo=<DstTzInfo 'US/Eastern' LMT-1 day, 19:04:00 STD>)
构建本地化时间的第二种方法是转换 使用标准
astimezone()
方法的现有本地化时间:

>>> ams_dt = loc_dt.astimezone(amsterdam)
>>> ams_dt.strftime(fmt)
'2002-10-27 12:00:00 CET+0100'
不幸的是,使用标准的
datetime
对于许多时区,构造函数“不适用于”pytz

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'


脚上的这个镜头正是你不应该再使用pytz的原因。请改用标准库zoneinfo。
>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)
'2002-10-27 12:00:00 LMT+0020'