#include <ctime>
#include <chrono>
#include <iostream>
using namespace std;
using namespace std::chrono;
int main()
{
char time_zone[] = "TZ=CET-1CEST";
putenv( time_zone );
tzset();
struct tm tm_gm; // 59, 29, 16, 12, 2, 119, 2, 70, 1 => 16:29:59 12.03.2019 (ok)
struct tm tm_lc; // 59, 29, 17, 12, 2, 119, 2, 70, 1 => 17:29:59 12.03.2019 (ok)
time_t time_now = time( nullptr ); // 1552404599
time_t time_lc = mktime( localtime_r( &time_now, &tm_lc ) ); // 1552404599
time_t time_gm = mktime( gmtime_r( &time_now, &tm_gm ) ); // 1552400999
time_t chrono_utc = system_clock::to_time_t( system_clock::now() ); // 1552408199
int diff_lc_chrono = time_lc - chrono_utc; // -3600
int diff_lc_gm = time_lc - time_gm; // 3600
int diff_chrono_lc = chrono_utc - time_lc; // 3600
int diff_chrono_gm = chrono_utc - time_gm; // 7200 ???
cout << "diff_lc_chrono: " << diff_lc_chrono << "\n"
<< "diff_lc_gm : " << diff_lc_gm << "\n"
<< "diff_chrono_lc: " << diff_chrono_lc << "\n"
<< "diff_chrono_gm: " << diff_chrono_gm;
}
I2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8Y2hyb25vPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CgppbnQgbWFpbigpCnsKICAgY2hhciB0aW1lX3pvbmVbXSA9ICJUWj1DRVQtMUNFU1QiOwogICBwdXRlbnYoIHRpbWVfem9uZSApOwogICB0enNldCgpOwoJCiAgIHN0cnVjdCB0bSB0bV9nbTsgLy8gNTksIDI5LCAxNiwgMTIsIDIsIDExOSwgMiwgNzAsIDEgPT4gMTY6Mjk6NTkgMTIuMDMuMjAxOSAob2spCiAgIHN0cnVjdCB0bSB0bV9sYzsgLy8gNTksIDI5LCAxNywgMTIsIDIsIDExOSwgMiwgNzAsIDEgPT4gMTc6Mjk6NTkgMTIuMDMuMjAxOSAob2spCgogICB0aW1lX3QgdGltZV9ub3cgICA9IHRpbWUoIG51bGxwdHIgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE1NTI0MDQ1OTkKICAgdGltZV90IHRpbWVfbGMgICAgPSBta3RpbWUoIGxvY2FsdGltZV9yKCAmdGltZV9ub3csICZ0bV9sYyApICk7ICAgICAvLyAxNTUyNDA0NTk5CiAgIHRpbWVfdCB0aW1lX2dtICAgID0gbWt0aW1lKCBnbXRpbWVfciggJnRpbWVfbm93LCAmdG1fZ20gKSApOyAgICAgICAgLy8gMTU1MjQwMDk5OQogICB0aW1lX3QgY2hyb25vX3V0YyA9IHN5c3RlbV9jbG9jazo6dG9fdGltZV90KCBzeXN0ZW1fY2xvY2s6Om5vdygpICk7IC8vIDE1NTI0MDgxOTkKCiAgIGludCBkaWZmX2xjX2Nocm9ubyA9IHRpbWVfbGMgLSBjaHJvbm9fdXRjOyAvLyAtMzYwMAogICBpbnQgZGlmZl9sY19nbSAgICAgPSB0aW1lX2xjIC0gdGltZV9nbTsgICAgLy8gMzYwMAogICBpbnQgZGlmZl9jaHJvbm9fbGMgPSBjaHJvbm9fdXRjIC0gdGltZV9sYzsgLy8gMzYwMAogICBpbnQgZGlmZl9jaHJvbm9fZ20gPSBjaHJvbm9fdXRjIC0gdGltZV9nbTsgLy8gNzIwMCA/Pz8KICAgCiAgIGNvdXQgPDwgImRpZmZfbGNfY2hyb25vOiAiCTw8IGRpZmZfbGNfY2hyb25vIDw8ICJcbiIKCQk8PCAiZGlmZl9sY19nbSAgICA6ICIJPDwgZGlmZl9sY19nbSA8PCAiXG4iICAgCgkJPDwgImRpZmZfY2hyb25vX2xjOiAiCTw8IGRpZmZfY2hyb25vX2xjIDw8ICJcbiIgICAKCQk8PCAiZGlmZl9jaHJvbm9fZ206ICIJPDwgZGlmZl9jaHJvbm9fZ207CiAgIAogICAKfQ==