On Sep 21, 2021, at 11:15 AM, Jan Engelhardt <jengelh@inai.de> wrote:
On Tuesday 2021-09-21 16:45, Howard Hinnant wrote:
zoned_time zt{"America/Port-au-Prince", local_days{1957y/June/5} + 19h + 30min}; cout << format("%F %T %Z", clock_cast<tai_clock>(zt.get_sys_time())) << '\n';
[...] IANA time zone names are part of the C++20 API, and pre-1970 data is expected (best effort of course)
I can't really find substance to this claim. The API [speaking of the locate_zone() function] wants a string, but it does not specify which particular string value(s)
In the end we believed that this sentence was the best way to describe the set of time zone names:
http://eel.is/c++draft/time.zone#general-1
[time.zone] describes an interface for accessing the IANA Time Zone Database [...]
With a standard wording so loose, the best interpretation I can give you is that the minimum set of known names in C++20 is that of tzdata1996l.
Here are detailed instructions for making suggestions to improve the wording of the C++ standard. Everyone is welcome to contribute: https://cplusplus.github.io/LWG/lwg-active.html#submit_issue
Which may be lacking America/Port-au-Prince. (Probably not, but humour me.)
The C++20 spec also has API to inspect the version of the time zone database. Howard