Это не может быть так сложно, как примеры, которые я нашел в Интернете. Я пытаюсь создать std::chrono::system_time
на основе некоторой даты UT C. Код, который я использую в одном потоке, следующий:
#include <chrono>
#include <iostream>
using namespace std;
using namespace chrono;
int main() {
// Construct a time to be Jan 1, 2020 00:00:00 UTC
static tm someTime{
0, // seconds after the minute - [0, 60] including leap second
0, // minutes after the hour - [0, 59]
0, // hours since midnight - [0, 23]
1, // day of the month - [1, 31]
0, // months since January - [0, 11]
120 // years since 1900
};
setenv("TZ", "UTC", 1);
tzset();
auto const time = system_clock::from_time_t(mktime(&someTime));
setenv("TZ", "America/Denver", 1);
tzset();
auto const t = system_clock::to_time_t(time);
cout << ctime(&t) << endl;
return 0;
}
Обратите внимание, что я печатаю в другом часовом поясе, чтобы убедиться, что setenv работает. Есть ли потокобезопасный способ создания C ++ 11 раз с даты UT C?