C语言中如何计算时间差

如何将两个包含“年月日时分”的5个字节数据进行比较,最后得出一个时间间隔(总分钟数)?其中的年份用后两位表示,如2010年8月31日9时26分表示为:1008310926... 如何将两个包含“年月日时分”的5个字节数据进行比较,最后得出一个时间间隔(总分钟数)?
其中的年份用后两位表示,如2010年8月31日9时26分表示为:1008310926
最后输出必须是时间差(总的分钟)
补充:在KEIL C中编译没有time.h这个头文件调用怎么办?
展开
 我来答
大野瘦子
高粉答主

2018-12-26 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.3万
展开全部

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

void main()

{

unsigned char time1[] = { 10, 8, 31, 9, 26 };

unsigned char time2[] = { 10, 8, 31, 9, 50 };

struct tm t1 = {0};

struct tm t2 = {0};

time_t _t1;

time_t _t2;

double diff;

t1.tm_year = time1[0] + 100;

t1.tm_mon = time1[1];

t1.tm_mday = time1[2];

t1.tm_hour = time1[3];

t1.tm_min = time1[4];

t2.tm_year = time2[0] + 100;

t2.tm_mon = time2[1];

t2.tm_mday = time2[2];

t2.tm_hour = time2[3];

t2.tm_min = time2[4];

_t1 = _mkgmtime( &t1 );

_t2 = _mkgmtime( &t2 );

diff = difftime(_t2, _t1 );

printf( "相差 %.0f 分钟\n", diff / 60 );

}

扩展资料:

C语言中有两个相关的函数用来计算时间差,分别是:

time_t time( time_t *t)   与 clock_t clock(void)

头文件: time.h

计算的时间单位分别为: s   , ms 

time_t 和 clock_t 是函数库time.h 中定义的用来保存时间的数据结构

返回值:

1、time  : 返回从公元1970年1月1号的UTC时间从0时0分0秒算起到现在所经过的秒数。如果参数 t 非空指针的话,返回的时间会保存在 t 所指向的内存。

2、clock:返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数。     1单元 = 1 ms。

所以我们可以根据具体情况需求,判断采用哪一个函数。

具体用法如下例子:

#include <time.h>

#include <stdio.h>

#include <stdlib.h>

int main()

{

time_t c_start, t_start, c_end, t_end;

c_start = clock();    //!< 单位为ms

t_start = time(NULL);  //!< 单位为s

system("pause");

c_end   = clock();

t_end = time(NULL);

//!<difftime(time_t, time_t)返回两个time_t变量间的时间间隔,即时间差

printf("The pause used %f ms by clock()\n",difftime(c_end,c_start)); 

printf("The pause used %f s by time()\n",difftime(t_end,t_start));

system("pause");

return 0;

}

因此,要计算某一函数块的占用时间时,只需要在执行该函数块之前和执行完该函数块之后调用同一个时间计算函数。再调用函数difftime()计算两者的差,即可得到耗费时间。

杜哥是个小天才
2018-07-20 · TA获得超过1809个赞
知道答主
回答量:32
采纳率:0%
帮助的人:9470
展开全部

1、获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 )。 精确到秒。

测试程序如下:

#include   
#include   
int main()  
{
time_t start ,end ;
double cost;
time(&start);
sleep(1);
time(&end);
cost=difftime(end,start);
printf("%f/n",cost);
return 0;  
}本程序在fedora9测试通过。

关于代码中的sleep函数,需要注意的是:

1)在windows下,为Sleep函数,且包含windows.h

2)关于sleep中的数,在Windows和Linux下1000代表的含义并不相同,Windows下的表示1000毫秒,也就是1秒钟;Linux下表示1000秒,Linux下使用毫秒级别的函数可以使用usleep。

2、clock_t clock(),clock()

获取的是计算机启动后的时间间隔,得到的是CPU时间,精确到1/CLOCKS_PER_SEC秒。

测试程序如下:

#include   
#include   
int main()  
{
double start,end,cost;
start=clock();
sleep(1);
end=clock();
cost=end-start;
printf("%f/n",cost);
return 0;  
}

拓展资料

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
&#xF308;犹豫徘徊等于白来

2015-10-22 · TA获得超过424个赞
知道小有建树答主
回答量:229
采纳率:100%
帮助的人:103万
展开全部

1、获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 )。 精确到秒。

测试程序如下:

#include <time.h>  
#include <stdio.h>  
int main()  
{  
    time_t start ,end ;  
    double cost;  
    time(&start);  
    sleep(1);  
    time(&end);  
    cost=difftime(end,start);  
    printf("%f/n",cost);  
    return 0;  
}

本程序在fedora9测试通过。

    关于代码中的sleep函数,需要注意的是:

    1)在windows下,为Sleep函数,且包含windows.h

    2)关于sleep中的数,在Windows和Linux下1000代表的含义并不相同,Windows下的表示1000毫秒,也就是1秒钟;Linux下表示1000秒,Linux下使用毫秒级别的函数可以使用usleep。


2、clock_t clock(),clock()

    获取的是计算机启动后的时间间隔,得到的是CPU时间,精确到1/CLOCKS_PER_SEC秒。

    测试程序如下:

#include <time.h>  
#include <stdio.h>  
int main()  
{  
    double start,end,cost;  
    start=clock();  
    sleep(1);  
    end=clock();  
    cost=end-start;  
    printf("%f/n",cost);  
    return 0;  
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
enochwills
2010-08-31 · TA获得超过4793个赞
知道大有可为答主
回答量:2031
采纳率:96%
帮助的人:1641万
展开全部
#include <stdio.h>
#include <string.h>
#include <time.h>

time_t scanf_time(char * msg)
{
struct tm t;
if(!msg) return 0;
memset(&t, 0, sizeof(t));
printf(msg);
printf("year?"); scanf("%04d", &(t.tm_year)); t.tm_year -= 1900;
printf("month?");scanf("%02d", &(t.tm_mon)); t.tm_mon --;
printf("day?"); scanf("%02d", &(t.tm_mday));
printf("hour?"); scanf("%02d", &(t.tm_hour));
printf("minute?");scanf("%02d",&(t.tm_min));
return mktime(&t);
}
int main(void)
{
time_t x = 0, y = 0;
x = scanf_time("please input time X:\n");
y = scanf_time("please input time Y:\n");
printf("Y - X = %d seconds.\n", y-x);
printf("Y - X = %d minutes.\n", (y-x)/60);
printf("Y - X = %d hours.\n", (y-x)/3600);
printf("Y - X = %d days.\n", (y-x)/86400L);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c8a09cb5e
2010-09-02 · TA获得超过485个赞
知道小有建树答主
回答量:419
采纳率:0%
帮助的人:194万
展开全部
LARGE_INTEGER one;
LARGE_INTEGER two;
LARGE_INTEGER freq;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&one);
{
计算过程
}
QueryPerformanceCounter(&two);
printf("所用时间:%f",two.QuadPart * 1.0 / freq.QuadPart - one.QuadPart * 1.0 / freq.QuadPart ) ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式