如何从 std::chrono::system_clock::time_point 设置平台(windows、linux、android)的系统时间。
问问题
1129 次
2 回答
4
您不能使用 std::chrono 工具来设置任何时钟的时间。您可以做的最好的事情是制造 astd::chrono::system_clock::time_point
来表示所选时间,将其转换为 a time_t
,然后将其与平台的 API 一起使用来设置时钟。
于 2013-05-13T19:43:39.530 回答
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);
于 2021-03-31T19:35:49.327 回答