C语言时间函数time_t

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言时间函数time_t相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()

time_t start, end;
int i;
start = time(NULL);
for (i = 1000000; i > 0; --i);
end = time(NULL);
printf ("%.2f\n", difftime(end, start));

return 0;

为什么输出是0.00???

1、time_t // 时间类型(time.h 定义) 
struct tm // 时间结构,time.h 定义如下: 
int tm_sec; 
int tm_min; 
int tm_hour; 
int tm_mday; 
int tm_mon; 
int tm_year; 
int tm_wday; 
int tm_yday; 
int tm_isdst; 
 
time ( &rawtime ); // 获取时间,以秒计,从1970年1月一日起算,存于rawtime 
localtime ( &rawtime ); //转为当地时间,tm 时间结构 
asctime() // 转为标准ASCII时间格式: 
//就是直接打印tm,tm_year 从1900年计算,所以要加1900,月tm_mon,从0计算,所以要加1

2、time函数使用示例

#include <stdio.h>  
#include <time.h>    
int main()
  
time_t rawtime;  
struct tm * timeinfo;  
time ( &rawtime );  
timeinfo = localtime ( &rawtime );  
printf ( "The current date/time is: %s", asctime (timeinfo) );  
    
return 0;

参考技术A 电脑cpu的主频太高,一百万次空循环的执行时间太短,所以,difftime(返回时间差)的返回值非常非常小,比如他返回的是0.0002的话,实际上不是0,但是因你输出时,只保留两位小数,后面的不是0的值也没输出,所以你保留两位小数输出的话,肯定是0.00
另外,difftime的返回值是64位整数,太小的话,肯定也是零,说到底还是因为时间差太小的造成的

循环次数加大一些,现在cpu主频都是1-2g的,你设1亿次或者10亿应该才能看到差距
for (i = 100000000; i > 0; --i);
改成1亿次。本回答被提问者采纳
参考技术B 说到底,time_t是一个整数,单位是秒,你的运算耗时不到一秒,当然输出0了,虽然difftime的返回值是double新类型的,但它的单位也是秒,所以difftime不可能返回有小数的值,也就是说小数部分都是0 参考技术C 赋值错误。star=clock();end同理,输出要除以1000 参考技术D for循环的时间不够长,end和start都在同一秒内,你把两值打印出来看就知道了。

以上是关于C语言时间函数time_t的主要内容,如果未能解决你的问题,请参考以下文章

c语言时间函数的具体使用方法,时间的加减

C语言中系统时间函数是怎么用的??

C语言如何获取电脑实时时间

C语言获取系统时间的函数

C语言获取系统时间

请问c语言里面的系统时钟是哪个函数来着?