如何从std :: chrono :: system_time :: time_point设置平台(windows,linux,android)的系统时间。
答案 0 :(得分:4)
您不能使用std :: chrono工具来设置任何时钟的时间。您可以做的最好的事情是制作std::chrono::system_clock::time_point
来表示所选时间,将其转换为time_t
,然后将其与平台的API一起使用来设置时钟。
答案 1 :(得分:1)
对于 Linux,我喜欢 Converting between timespec & std::chrono 中的参考代码:
#include <time.h>
#include <chrono>
using std::chrono; // for example brevity
constexpr timespec timepointToTimespec(
time_point<system_clock, nanoseconds> tp)
{
auto secs = time_point_cast<seconds>(tp);
auto ns = time_point_cast<nanoseconds>(tp) -
time_point_cast<nanoseconds>(secs);
return timespec{secs.time_since_epoch().count(), ns.count()};
}
const char* timePointToChar(
const time_point<system_clock, nanoseconds>& tp) {
time_t ttp = system_clock::to_time_t(tp);
return ctime(&ttp);
}
const time_point system_time = system_clock::now();
cout << "System time = " << timePointToChar(system_time) << endl;
const timespec ts = timepointToTimespec(system_time);
clock_settime(CLOCK_REALTIME, &ts);