C/C++ 获取时间戳(毫秒级别)
记录一下C/C++ 获取时间戳方法,毫秒级别
windows下:
#include
#include
#include
#include uint64_t GetCurrentTimerMS(char* szTimer=NULL)
{uint64_t nTimer = 0;SYSTEMTIME currentTime;GetLocalTime(¤tTime);tm temptm = { currentTime.wSecond,currentTime.wMinute,currentTime.wHour,currentTime.wDay,currentTime.wMonth - 1,currentTime.wYear - 1900};nTimer = mktime(&temptm) * 1000 + currentTime.wMilliseconds;if(szTimer != NULL)sprintf(szTimer, "%llu", nTimer);return nTimer;
}
int main(){while(1){char szTimer[64];GetCurrentTimerMS(szTimer);printf("millisecond:%s,\t%llu\n\n",szTimer,GetCurrentTimerMS()); //毫秒Sleep(1);}return 0;
}
代码执行结果:

Linux下:
#include
#include
#include
#include
#include int main(){struct timeval tv;while(1){gettimeofday(&tv,NULL);printf("millisecond:%ld\n\n",tv.tv_sec*1000 + tv.tv_usec/1000); //毫秒usleep(900);}//gettimeofday(&tv,NULL);//printf("millisecond:%ld\n",tv.tv_sec*1000 + tv.tv_usec/1000); //毫秒//printf("microsecond:%ld\n",tv.tv_sec*1000000 + tv.tv_usec); //微秒return 0;
}
如果想要写一个跨平台都能使用的话就增加一个宏定义判断:
#include
#include
#ifdef _WIN32#include #include
#else#include #include
#endifuint64_t GetCurrentTimerMS(char* szTimer=NULL)
{uint64_t nTimer = 0;
#ifdef _WIN32SYSTEMTIME currentTime;GetLocalTime(¤tTime);tm temptm = { currentTime.wSecond,currentTime.wMinute,currentTime.wHour,currentTime.wDay,currentTime.wMonth - 1,currentTime.wYear - 1900};nTimer = mktime(&temptm) * 1000 + currentTime.wMilliseconds;
#elsestruct timeval tv;gettimeofday(&tv,NULL);// printf("second:%ld\n",tv.tv_sec); //秒nTimer = tv.tv_sec*1000 + tv.tv_usec/1000;
#endifif(szTimer != NULL)sprintf(szTimer, "%llu", nTimer);return nTimer;
}int main()
{char szTimer[64];uint64_t nTimer=-1;GetCurrentTimerMS(szTimer); //带参数nTimer = GetCurrentTimerMS(); //不带参数printf("millisecond:%s,\t%llu\n\n",szTimer,nTimer ); //毫秒return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
