当前位置: 技术问答>linux和unix
gettimeofday 获取当前时间,是怎么计算间隔的 。
来源: 互联网 发布时间:2016-08-14
本文导语: 看到一计算程序执行时间的代码: 如: gettimeofday (&now, NULL); //获取当前时间 inow = (unsigned int)(now.tv_sec * 1000 + now.tv_usec / 1000 - 1136073600000); //这个时间算出来表示什么啊 红色的,是什么意思...
看到一计算程序执行时间的代码:
如:
gettimeofday (&now, NULL); //获取当前时间
inow = (unsigned int)(now.tv_sec * 1000 + now.tv_usec / 1000 - 1136073600000); //这个时间算出来表示什么啊
红色的,是什么意思。。
如:
gettimeofday (&now, NULL); //获取当前时间
inow = (unsigned int)(now.tv_sec * 1000 + now.tv_usec / 1000 - 1136073600000); //这个时间算出来表示什么啊
红色的,是什么意思。。
|
#include
#include
int
main(int argc, char *argv[])
{
time_t tick;
struct tm *tp;
char buf[80];
tick = 1136073600;
tp = gmtime(&tick);
strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", tp);
printf("%sn", buf);
return 0;
}
/*
* 输出:
* 2006-01-01 00:00:00
* 也就是说在计算现在距离上述时间的毫秒数。
* 但是算法有问题,因为32位整数存不了这个数1136073600000,在32位平台下long也是32位,所以程序写
* 不怎么样。其实可以改为
* ((now.tv_sec - 1136073600)* 1000 + now.tv_usec / 1000),
* 但是这么写也就能计算24天多一点的毫秒数,超过这个时间就会出错
* 2147483647 / 1000 / 3600 / 24 = 24.85 (天)
* 所以还是建议保存gettimeofday返回的struct timeval类型,然后再进行计算。
* 或者用int64_t保存结果。
*/