fork download
  1. #include <ctime>
  2. #include <chrono>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6. using namespace std::chrono;
  7.  
  8. int main()
  9. {
  10. char time_zone[] = "TZ=CET-1CEST";
  11. putenv( time_zone );
  12. tzset();
  13.  
  14. struct tm tm_gm; // 59, 29, 16, 12, 2, 119, 2, 70, 1 => 16:29:59 12.03.2019 (ok)
  15. struct tm tm_lc; // 59, 29, 17, 12, 2, 119, 2, 70, 1 => 17:29:59 12.03.2019 (ok)
  16.  
  17. time_t time_now = time( nullptr ); // 1552404599
  18. time_t time_lc = mktime( localtime_r( &time_now, &tm_lc ) ); // 1552404599
  19. time_t time_gm = mktime( gmtime_r( &time_now, &tm_gm ) ); // 1552400999
  20. time_t chrono_utc = system_clock::to_time_t( system_clock::now() ); // 1552408199
  21.  
  22. int diff_lc_chrono = time_lc - chrono_utc; // -3600
  23. int diff_lc_gm = time_lc - time_gm; // 3600
  24. int diff_chrono_lc = chrono_utc - time_lc; // 3600
  25. int diff_chrono_gm = chrono_utc - time_gm; // 7200 ???
  26.  
  27. cout << "diff_lc_chrono: " << diff_lc_chrono << "\n"
  28. << "diff_lc_gm : " << diff_lc_gm << "\n"
  29. << "diff_chrono_lc: " << diff_chrono_lc << "\n"
  30. << "diff_chrono_gm: " << diff_chrono_gm;
  31.  
  32.  
  33. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
diff_lc_chrono: 0
diff_lc_gm    : 3600
diff_chrono_lc: 0
diff_chrono_gm: 3600