This API avoids that problem entirely.
The problem with TZ is TZ in its core definition.
1) they always change: if you have not updated your TZ since 3 months they are probably inaccurate
2) your TZ definition maybe accurate but they may not have been applied for real in the concerned zone
3) you can have different local time for the same longitude
4) you can have different days on the same longitude ...
5) TZ are not versioned, if the TZ changed between 2 records you may have made, you have inaccurate intervals stored. We do NOT have an API to take TZ change over time in consideration.
6) CEST/DST is breaking the axiom that time is a growing monotonic function
References 8.5.3 TZ in postgresql man https://www.postgresql.org/docs/9.2/static/datatype-datetime...
Computerphile what's wrong with timezones https://www.youtube.com/watch?v=-5wpm-gesOY
There is some weird behaviour due to this when trying to get a timezone without an associated date as it doesn't default to now.
Then again you probably have all sorts of DST bugs if you have places in your code that do that.
Correct, or more precisely for a given timezone it will use the correct offset depending on the date being converted:
>>> format_datetime(datetime.datetime(2011, 12, 15, 10, 5, 18, tzinfo=berlin).astimezone(samoa), 'full')
Wednesday, 14 December 2011 at 23:12:18 Apia Daylight Time
>>> format_datetime(datetime.datetime(2012, 1, 15, 10, 5, 18, tzinfo=berlin).astimezone(samoa), 'full')
Sunday, 15 January 2012 at 23:12:18 Apia Daylight Time> P) The event is at a precise internationally recognized moment (better for co-ordination globally).
> R) The event is in local time (like a lunch date) and expected to remain colloquially fixed.
In the case you mention, it's somewhat arguable that the burden of changing the colloquially fixed dates (R) falls on the citizens of footopia, in the same way as changing the time of a purely mechanical clock also would. caveat emptor.