在 c++ 中获取 X 毫秒前的时间戳

Get timestamp from X milliseconds ago in c++

本文关键字:时间戳 c++ 获取      更新时间:2023-10-16

我正在尝试从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() << "msn";
}

这将获取当前时间 UTC,将其截断为毫秒精度,然后从该时间点减去 100 毫秒。

然后,它提取基础值并将其打印出来(自 1970-01-01 00:00:00.000 UTC 以来的毫秒数(。

这应该会有所帮助

#include <iostream>
#include <time.h>
using namespace std;
int main(int argc,char** argv){
clock_t start_time = clock();
const long int REPEAT_CYCLES = 500000000;
int result = 0;
for(long int i=0;i<REPEAT_CYCLES;i++)
result = (result > 1000) ? result-1 : result+1; 
clock_t finish_time = clock();
cout << "WORK EXECUTION TIME: " << (double)(finish_time - start_time)/1000 << "ms" << endl;
return EXIT_SUCCESS;
}