inkonsistenz beim Umschalten zwischen Zeitzonen in python

Ich habe ein datetime-Objekt wie folgt erstellt:

tm = datetime.datetime.strptime('2010 Aug 04 14:15:16', '%Y %b %d %H:%M:%S')
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16)

Ich stelle dann die Zeitzone so ein:

tm.replace(tzinfo=pytz.timezone('UTC'))
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16, tzinfo=<UTC>)

Eventuell ändere ich die Zeitzone wie folgt in US / Pacific:

>>> tm = tm.astimezone(pytz.timezone('US/Pacific'))
>>> tm
datetime.datetime(2010, 8, 4, 7, 15, 16, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)

Das ist richtig. Aber wenn ich in die andere Richtung gehen würde:

>>> tm = tm.replace(tzinfo =pytz.timezone('US/Pacific'))
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)

Wie Sie sehen, wird bei Verwendung von replace () mit der PST-Zeitzone fälschlicherweise davon ausgegangen, dass es sich nicht um die Sommerzeit handelt. Wenn ich in UTC konvertiere, werden daher 8 anstatt 7 Stunden hinzugefügt.

Warum macht es das und wie ändere ich es, damit es das tut, was ich will (DST richtig erkennen oder nicht)?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage