C语言中时间函数

C语言中时间函数,第1张

本着越复杂越好的观点,给出一个。

下载apr-127zip,使用vC6编译出dll文件,链接。

#include "aprh"

#incluee "apr_timeh"

int main() {

apr_time_t time;

time=apr_time_now();

char strtime[APR_CTIME_LEN];

apr_ctime(strtime,time);

printf("NOW: %s",strtime);

return 0;

}

clock tick:时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由CPU控制的。一个clock tick不是CPU的一个时钟周期,而是C/C++的一个基本计时单位。

C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:

clock_t clock( void );

这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在timeh文件中,我们可以找到对它的定义:

#ifndef _CLOCK_T_DEFINED

typedef long clock_t;

#define _CLOCK_T_DEFINED

#endif

很明显,clock_t是一个长整形数。在timeh文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:

#define CLOCKS_PER_SEC ((clock_t)1000)

可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:

void elapsed_time()

{

printf("Elapsed time:%u secs\n",clock()/CLOCKS_PER_SEC);

}

当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:

#include “stdioh”

#include “stdlibh”

#include “timeh”

int main( void )

{

long i = 10000000L;

clock_t start, finish;

double duration;

/ 测量一个事件持续的时间/

printf( "Time to do %ld empty loops is ", i );

start = clock();

while( i-- ) ;

finish = clock();

duration = (double)(finish - start) / CLOCKS_PER_SEC;

printf( "%f seconds\n", duration );

system("pause");

}

运行结果如下:

Time to do 10000000 empty loops is 003000 seconds

上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。

time是C语言获取当前系统时间的函数,以秒作单位,代表当前时间自Unix标准时间戳(1970年1月1日0点0分0秒,GMT)经过了多少秒。

形式为time_t

time(time_t

t);

该函数提供两种返回方式,返回值,和指针参数。

可以根据需要选择。当参数t为空指针(NULL)时,只返回值。

而NULL的定义是(void

)

0,

所以time(0)也就是time(NULL)的另一种写法,表示只通过返回值获取时间值。

扩展资料:

time函数

函数名称:

localtime

函数原型:

struct

tm

localtime(const

time_t

timer)

函数功能:

返回一个以tm结构表达的机器时间信息

函数返回:

以tm结构表达的时间,结构tm定义如下:

#ifndef

_TM_DEFINED

struct

tm

{

int

tm_sec;

/

取值区间为[0,59]

/

int

tm_min;

/

-

取值区间为[0,59]

/

int

tm_hour;

/

-

取值区间为[0,23]

/

int

tm_mday;

/

一个月中的日期

-

取值区间为[1,31]

/

int

tm_mon;

/

月份(从一月开始,0代表一月)

-

取值区间为[0,11]

/

int

tm_year;

/

年份,其值等于实际年份减去1900

/

int

tm_wday;

/

星期

取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推

/

int

tm_yday;

/

从每年的1月1日开始的天数

取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推

/

int

tm_isdst;

/

夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。/

};

#define

_TM_DEFINED

#endif

参数说明:

timer-使用time()函数获得的机器时间

-timeh

可以使用CLOCK()函数:

clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:

clock_t clock(void) ;

这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型,在timeh文件中,可以找到对它的定义:

#ifndef _CLOCK_T_DEFINED

typedef long clock_t;

#define _CLOCK_T_DEFINED

#endif

很明显,clock_t是一个长整形数。在timeh文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:

#define CLOCKS_PER_SEC ((clock_t)1000)

可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:

void elapsed_time()

{

printf("Elapsed time:%u secs\n",clock()/CLOCKS_PER_SEC);

}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/13492877.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存