当前位置:首页 » 编程语言 » difftimeC语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

difftimeC语言

发布时间: 2022-01-31 23:02:38

1. c语言中difftime(end,start)函数可被end-start表达式所取代吗 我测试了几组数,貌似是可以的。有知道的

time_t
type
<ctime>
Time type

Type capable of representing times and support arithmetical operations.

This type is returned by the time function and is used as parameter by some other functions of the <ctime> header.

It is almost universally expected to be an integral value representing the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC. This is e to historical reasons, since it corresponds to a unix timestamp, but is widely implemented in C libraries across all platforms.

指正楼上答案

请点击参考资料进行详细阅读
很多问题要从根源上查阅,而不是去听取别人的答案。
像这种标准函数的问题,查下它的帮助文档就可以了,文档才是最权威的。
文档上写的清楚,返回值是The difference in seconds (time2-time1) as a floating point double.这个函数的作用也就在于此,保证返回值为两个时间所差的秒数。
而time_t的类型It is almost universally expected to be an integral value representing the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC. 几乎但并不确保所有都是以秒为单位,这就是区别所在。用difftime具有更强的可移植性。在不是很特别的系统上,两值之差是可以取代difftime这个函数的。

2. C语言的比较两个时间的函数

1、方法一:若时间为结构体变量,比较两个时间的大小,而且不能改变时间的值,可以是:
int timecmp(date_t* date1,date_t* date2)
{
if(date1-> year==date1-> year)
return memcmp(date1, date2,sizeof(date_t));
else
return date1-> year-date2-> year
}
2、方法二:
long getTimeInterval(const char *t1, const char *t2) {
struct tm tm1, tm2;
time_t start, end;
double diff;
memset(&tm1, 0, sizeof(tm1));
memset(&tm2, 0, sizeof(tm2));
strptime(t1, "%Y%m%d", &tm1);
start = mktime(&tm1);
strptime(t2, "%Y%m%d", &tm2);
end = mktime(&tm2);
diff = difftime(start, end);
return d2l(diff);
}
调用:
printf("getTimeInterval=[%ld]\n", getTimeInterval("20101221", "20110326"));
printf("getTimeInterval=[%ld]\n", getTimeInterval("20101221", "20990326"));
第一行输出:[-8208000]
第二行输出:[1292860801]
3、补充:C语言时间函数:
(1)、获得日历时间函数:
可以通过time()函数来获得日历时间(Calendar Time),其原型为:time_t time(time_t * timer);

如果已经声明了参数timer,可以从参数timer返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970年
1月1日0时0分0秒)到现在此时的秒数。如果参数为空(NUL),函数将只通过返回值返回现在的日历时间,比如下面这个例子用来显示当前的日历时间:
(2)、获得日期和时间函数:
这里说的日期和时间就是平时所说的年、月、日、时、分、秒等信息。从第2节我们已经知道这些信息都保存在一个名为tm的结构体中,那么如何将一个日历时间保存为一个tm结构的对象呢?
其中可以使用的函数是gmtime()和localtime(),这两个函数的原型为:
struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);

其中gmtime()函数是将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将
日历时间转化为本地时间。比如现在用gmtime()函数获得的世界标准时间是2005年7月30日7点18分20秒,那么用localtime()函数
在中国地区获得的本地时间会比世界标准时间晚8个小时,即2005年7月30日15点18分20秒。

3. C语言中用difftime计算两个时间差问题,求解!

你好。


问题分析:

time_t 只能表示从1970年1月1日0时0分0秒 到此时的秒数,1970年1月1日0时0分0秒 以前的时间它是无法表示的。而struct tm 的成员变量tm_year 的值为实际年份减去 1900,你的程序中给timeptr1.tm_year 和timeptr2.tm_year 都赋值为 0,就相当于这两个时间都是 1900 年,1900 年在 1970年1月1日0时0分0秒 以前,所以用 mktime 函数计算的结果 time_t 是无法表示的,t1 和 t2 的结果就都是 0,最终 difftime(0,0) 结果当然也是 0。


解决方案:

给struct tm 的成员变量tm_year 一个大于 70 的值如 71,即 1971年,总之保证这个时间在 1970年1月1日0时0分0秒 之后即可。


程序清单:

#include "stdio.h"

#include "time.h"


int main()

{

time_t t1,t2;

struct tm timeptr1,timeptr2;


timeptr1.tm_mday=1;

timeptr1.tm_mon=1;

timeptr1.tm_year=1971-1900;

timeptr1.tm_sec=timeptr1.tm_min=timeptr1.tm_hour=

timeptr1.tm_wday=timeptr1.tm_yday=timeptr1.tm_isdst=0;


timeptr2.tm_mday=2;

timeptr2.tm_mon=1;

timeptr2.tm_sec=5;

timeptr2.tm_year=1971-1900;

timeptr2.tm_min=timeptr2.tm_hour=timeptr2.tm_wday=

timeptr2.tm_yday=timeptr2.tm_isdst=0;


t1=mktime(&timeptr1);

t2=mktime(&timeptr2);

printf("时间差: >> %lf ",difftime(t2,t1));


system("pause");

return 0;

}


运行结果:


望采纳!

4. C语言时间间隔

double difftime(
time_t timer1,
time_t timer0
);
double _difftime32(
__time32_t timer1,
__time32_t timer0
);
double _difftime64(
__time64_t timer1,
__time64_t timer0
);

参数

timer1
关闭时。
timer0
启动时间。
返回值

difftime 返回经过的时间 (以秒为单位),从 timer0 到 timer1。 返回的值是一个双精度浮点数。 返回值可能为 0,指示错误。
备注

difftime 函数计算两个提供的时间值 timer0 和 timer1之间的差异。

5. c语言如何计时

  1. C语言中提供了许多库函数来实现计时功能

  2. 下面介绍一些常用的计时函数

    1. time()

    头文件:time.h

    函数原型:time_t time(time_t * timer)

    功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的时此刻所经过的秒数

    用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。

    用difftime函数可以计算两个time_t类型的时间的差值,可以用于计时。用difftime(t2,t1)要比t2-t1更准确,因为C标准中并没有规定time_t的单位一定是秒,而difftime会根据机器进行转换,更可靠。

    说明:C标准库中的函数,可移植性最好,性能也很稳定,但精度太低,只能精确到秒,对于一般的事件计时还算够用,而对运算时间的计时就明显不够用了。

    2. clock()

    头文件:time.h

    函数原型:clock_t clock(void);

    功能:该函数返回值是硬件滴答数,要换算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000。

    说明:可以精确到毫秒,适合一般场合的使用。

    3. timeGetTime()

    头文件:Mmsystem.h引用库: Winmm.lib

    函数原型:DWORD timeGetTime(VOID);

    功能:返回系统时间,以毫秒为单位。系统时间是从系统启动到调用函数时所经过的毫秒数。注意,这个值是32位的,会在0到2^32之间循环,约49.71天。

    说明:该函数的时间精度是五毫秒或更大一些,这取决于机器的性能。可用timeBeginPeriod和timeEndPeriod函数提高timeGetTime函数的精度。如果使用了,连续调用timeGetTime函数,一系列返回值的差异由timeBeginPeriod和timeEndPeriod决定。

    4. GetTickCount()

    头文件:windows.h

    函数原型:DWORD WINAPI GetTickCount(void);

    功能:返回自设备启动后的毫秒数(不含系统暂停时间)。

    说明:精确到毫秒。对于一般的实时控制,使用GetTickCount()函数就可以满足精度要求。

    5. QueryPerformanceCounter()、QueryPerformanceFrequency()

    头文件:windows.h

    函数原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);

    BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

    功能:前者获得的是CPU从开机以来执行的时钟周期数。后者用于获得你的机器一秒钟执行多少次,就是你的时钟周期。

    补充:LARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构, 其具体用法根据编译器是否支持64位而定:

    在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率,然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经历的精确时间。

    说明:这种方法的定时误差不超过1微秒,精度与CPU等机器配置有关,一般认为精度为透微秒级。在Windows平台下进行高精度计时的时候可以考虑这种方法。

    6. gettimeofday()

    Linux C函数。

    头文件:sys/time.h

    函数原型:int gettimeofday(struct timeval *tv,struct timezone *tz);

    说明:其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果(若不使用则传入NULL即可)。

    timeval的定义为:

    structtimeval{

    longtv_sec;//秒数

    longtv_usec;//微秒数

    }

    可见该函数可用于在linux中获得微秒精度的时间。

    说明:使用这种方式计时,精度可达微秒。经验证,在arm+linux的环境下此函数仍可使用。

6. c语言计算时间差

#include <time.h>
time_t start_time, end_time;
double elapsed_time;

time( &start_time );

... ...

time( &end_time );
elapsed_time = difftime(start_time, end_time);

7. 想要c语言时间函数:clock得到处理器时间 difftime得到时间差 mktime 设置时间 time得到时间的描述和例子

time_t其实就是一个long类型,可以查看time.h头文件,指从1900年1月1日开始到现在的秒数

8. c语言如何计算两个时间相差多少

任意输入两个24小时制的时间,输出两个时间的时间差;

9. c语言difftime返回0

difftime类型是double,所以输出格式应该用%f,而不是%d

10. C语言 计时函数时间差总为零

C语言中变量是有作用域的,除非定义了全局变量,一般而言不同的函数体中的变量相互不可见。

因此,主函数中的t_start与leave_car()函数中的t_start并不是同一个变量!

修改如下:

  1. 将主函数中的

    time_t t_start,t_end;
    t_start=time(NULL);
    两个语句去掉,因为对整个程序而言没有实际的作用。

  2. 在leave_car()中

    printf("yes");

    前添加

    t_start=time(NULL);

  3. 另外

    printf("time is %f s ",difftime(t_end,t_start);
    少写了一个反括号