
I'm using Boost 1.66 and use the following code to get a Posix string to set my uCLinux TZ environment variable to get a local time from an UTC time #include <boost/date_time/local_time/tz_database.hpp> #include <boost/date_time/local_time/local_time.hpp> tz_database tz_db; tz_db.load_from_file("./date_time_zonespec.csv"); time_zone_ptr nyc = tz_db.time_zone_from_region("Europe/Stockholm"); auto s = nyc->to_posix_string(); // "CET+01CEST+01,M3.5.0/02:00,M10.5.0/03:00" setenv("TZ", s.c_str(), 1); The odd thing is that my localtime becomes incorrect, and is actually 1 hr wrong on the opposite side of UTC. But, when I read https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html it says "The offset specifies the time value you must add to the local time to get a Coordinated Universal Time value". Not add to UTC time, which seems like the Boost Posix string assumes !!!!! Which explains why 16:00 UTC give 15:00 CET instead of 17:00 which is the correct value, when using localtime_r(). Am I missing something fundamentally, or what? Regards Mats Webjörn Webjörn IngenjörsKonsult AB Solhemsbackarna 75A SE-163 56 SPÅNGA Sweden