C/C++获取时间戳
我们在开发项目中经常需要使用到时间戳,指Unix时间戳是,是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。以下展示了c/c++常用的获取时间戳的方法。
一、C获取时间戳
1、秒
#include<time.h>
time_t result = time(NULL);
printf("time:%lldn",result);
2、毫秒
#include<Windows.h>
SYSTEMTIME tv;
GetLocalTime(&tv);
printf("The local time is %d:%d:%d:%dn", tv.wHour,tv.wMinute,tv.wSecond,tv.wMilliseconds);
3、微秒
#include<time.h>
#include<Windows.h>
struct timevall
{
long tv_sec;
long tv_usec;
};
static int gettimeofday(struct timevall* tv)
{
union {
long long ns;
FILETIME ft;
} now;
GetSystemTimeAsFileTime(&now.ft);
tv->tv_usec = (long)((now.ns / 10LL) % 1000000LL);
tv->tv_sec = (long)((now.ns - 116444736000000000LL) / 10000000LL);
return (0);
}
void main()
{
timevall tv;
gettimeofday(&tv);
printf("getEventMessage begin.time:%lldn", (time_t)tv.tv_sec * (time_t)1000000 + tv.tv_usec);
}
二、C++获取时间戳
c++可以直接使用标准库中的接口函数,可以修改std::chrono::microseconds等级,获取对应级别的时间戳。例如:std::chrono::microseconds微秒级。
#include<chrono>
std::cout << std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch()).count() << std::endl;
Linux下一般使用库函数gettimeofday()
#include <sys/time.h>
gettimeofday(&tv,NULL);
printf("millisecond:%ldnn",tv.tv_sec*1000 + tv.tv_usec/1000); //毫秒