参考链接:
https://www.cnblogs.com/justlikethat/p/3623504.html
https://www.runoob.com/cplusplus/cpp-date-time.html
函数原型:void ftime(struct timeb *tp);
头文件:#include <sys/timeb.h>
timeb结构体定义:
struct timeb{
time_t time; /*为1970-01-01至今的秒数*/
unsigned short millitm; /* 千分之一秒即毫秒 */
short timezone; /* 为目前时区和Greenwich相差的时间,单位为分钟 */
short dstflag; /* 为日光节约时间的修正状态,如果为非0代表启用日光节约时间修正 */
};
结构类型 tm 把日期和时间以 C 结构的形式保存,tm 结构的定义如下:
struct tm {
int tm_sec; // 秒,正常范围从 0 到 59,但允许至 61
int tm_min; // 分,范围从 0 到 59
int tm_hour; // 小时,范围从 0 到 23
int tm_mday; // 一月中的第几天,范围从 1 到 31
int tm_mon; // 月,范围从 0 到 11
int tm_year; // 自 1900 年起的年数
int tm_wday; // 一周中的第几天,范围从 0 到 6,从星期日算起
int tm_yday; // 一年中的第几天,范围从 0 到 365,从 1 月 1 日算起
int tm_isdst; // 夏令时
}
此方法算的是现实世界流逝的时间,获得从UTC时间1970年1月1日午夜(00:00:00)起累计的时间。
与clock()不同,clock()计算的是从程序运行开始被程序进程使用的CPU时间tick,而不是真正现实世界流逝的时间。很显然这个时间肯定要比现实时间要慢的多,除非CPU只有你这么一个进程在跑,占用了全部CPU。
示例:
#include <iostream>
#include <sys/timeb.h>
int main( )
{
struct timeb t1;
ftime(&t1);
//t1.time是从UTC时间1970年1月1日午夜(00:00:00)起累计的秒数;t1.millitm是一秒内的毫秒数
time_t ttt= t1.millitm+t1.time*1000;
std::cout << ttt << std::endl;
printf("%ld.%03d\n", t1.time, t1.millitm);
std::cout << "1970 到目前经过秒数:" << t1.time << std::endl;
tm *ltm2 = localtime(&t1.time);
// 输出 tm 结构的各个组成部分
std::cout << "年: "<< 1900 + ltm2->tm_year << std::endl;
std::cout << "月: "<< 1 + ltm2->tm_mon<< std::endl;
std::cout << "日: "<< ltm2->tm_mday << std::endl;
std::cout << "时间: "<< ltm2->tm_hour << ":" << ltm2->tm_min << ":" << ltm2->tm_sec << std::endl;
}
输出: