背景:
我想使用系统函数获取UTC来添加时间戳。函数sgetdayoftime()
可以帮助获取纪元时间(从1970-1-1开始),另一个函数localtime_r
可以帮助将纪元时间更改为UTC。我写了一个简单的程序来测试时间获取的稳定性。但结果出现了秒数跳动的情况。
环境: Ubuntu 16.04 安装在 Win 10(1903)中的 Vmware Workstation 15.1 中。该程序在 C++ 中运行。
问题: 我使用matlab分析时间差异,结果如下:
代碼: 代码非常简单。
#include <sys/time.h>
#include <iostream>
#include <time.h>
#include <fstream>
#include <unistd.h>
using namespace std;
int main(int argc, char **argv)
{
int cnt=0;
ofstream fp("time.txt");
//For getting the UTC
struct timeval epochTime;
struct tm timenow;
while(1)
{
//Get the UTC
gettimeofday(&epochTime, NULL);
localtime_r(&epochTime.tv_sec, &timenow);
//Write time to txt
fp<<cnt<<","<<timenow.tm_year + 1900<<"-"<<timenow.tm_mon + 1<<"-"<<timenow.tm_mday<<
" "<<timenow.tm_hour<<":"<<timenow.tm_min<<":"<<timenow.tm_sec<<"."<<epochTime.tv_usec<<endl;
//sleep for test
usleep(10000);
if(cnt > 1000)
{
return 1;
}
cout << cnt << endl;
cnt +=1;
}
return 1;
}