我正在尝试从 X 毫秒前获取 linux 时间戳。
我知道你可以在几秒钟内做这样的事情:
time_t old_time = difftime(time(nullptr), num_seconds)
但是,我试图以毫秒为单位获取时间戳(也就是从纪元开始的时间),不幸的是,似乎 difftime/time(nullptr) 只能以秒为增量工作。
我还看到了一些关于使用 std::chrono::system_clock 的想法,但我无法让它发挥作用,这与我转换/等等的方式有关。我认为是错误的。
这是我尝试的一个示例(我的第一步,甚至没有编译):
Clock::time_point time = Clock::now();
std::chrono::system_clock::duration diff =
std::chrono::duration<int,std::milli>(100);
time = time - diff;
time_t final_timestamp = std::chrono::duration_cast<std::chrono::milliseconds>(time.time_since_epoch()).count();
有谁知道这个问题的简单解决方案?提前致谢!
最佳答案
#include <chrono>
#include <iostream>
int
main()
{
using namespace std::chrono;
auto old_time = time_point_cast<milliseconds>(system_clock::now()) - 100ms;
std::cout << old_time.time_since_epoch().count() << "ms\n";
}
这将获取当前时间 UTC,将其截断为毫秒精度,然后从该时间点减去 100 毫秒。
然后它提取基础值并将其打印出来(自 1970-01-01 00:00:00.000 UTC 以来的毫秒数)。
关于c++ - 在 C++ 中从 X 毫秒前获取时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59240910/