C/C++ 获取时间戳(毫秒级别)

记录一下C/C++ 获取时间戳方法,毫秒级别

windows下:

#include 
#include 
#include
#include uint64_t GetCurrentTimerMS(char* szTimer=NULL)
{uint64_t nTimer = 0;SYSTEMTIME currentTime;GetLocalTime(&currentTime);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(&currentTime);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;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部