Why doesn’t pytz localize() produce a datetime object with tzinfo matching the tz object that localized it?

They are the same time zone – "Europe/Berlin".

When you are printing them, the output includes the abbreviation and offset that applies at that particular point in time.

If you examine the tz data sources, you’ll see:

# Zone  NAME            GMTOFF   RULES       FORMAT   [UNTIL]
Zone    Europe/Berlin   0:53:28  -           LMT      1893 Apr
                        1:00     C-Eur       CE%sT    1945 May 24 2:00
                        1:00     SovietZone  CE%sT    1946
                        1:00     Germany     CE%sT    1980
                        1:00     EU          CE%sT

So it would appear that when the time zone has not localized a datetime, then it just uses the first entry.

It would also appear that pytz doesn’t retain the extra 28 seconds from the original local mean time deviation – but that doesn’t matter unless you are working with dates in Berlin before April 1893.

Leave a Comment