《c/c++ 获取时间戳》——精确到毫秒
程序员文章站
2022-05-02 15:13:25
...
timeb.h和time.h
这两个是C++的标准头文件,在Microsoft Visual Studio/VC98/Include中,表示了C++对时间的支持能力。
time.h中申明了tm结构体,来对时间年月日、时分秒的支持,值得注意的是,它不支持毫秒级的计时方式。
可以用函数time(NULL)函数获取当前时间戳。
timeb.h是对time.h的补充,申明了timeb结构体,用来支持毫秒级的计时方式。
可以用ftime(timeb&)获取当前时间戳。
两个头文件的都定义了typedef long time_t;
time_t和tm可以相互转换,然而C++并没有提供从time_t到tm的转换,可以调用ACE的转换函数ACE_OS::localtime_r (const time_t *t, struct tm *res)来实现。
timeb.time实际上就是time_t;timeb.millitm表示毫秒。
timeb.h获取毫秒的代码
#include <iostream>
#include <sys/timeb.h>
using namespace std;
int main()
{
timeb t;
ftime(&t);//获取毫秒
cout << t.time << " " << t.millitm << endl;//秒级时间戳
cout << t.time * 1000 + t.millitm << endl;//某个时间戳下走过的毫秒数,可用来求时间复杂度
cout << t.time * 1000 + t.millitm << endl;//13位毫秒的时间戳
}
timeb是一个结构体,下面是源码
struct timeb
{
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
};