c语言时间设置函数

上传人:新** 文档编号:547818243 上传时间:2024-03-10 格式:DOCX 页数:8 大小:17.70KB
返回 下载 相关 举报
c语言时间设置函数_第1页
第1页 / 共8页
c语言时间设置函数_第2页
第2页 / 共8页
c语言时间设置函数_第3页
第3页 / 共8页
c语言时间设置函数_第4页
第4页 / 共8页
c语言时间设置函数_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《c语言时间设置函数》由会员分享,可在线阅读,更多相关《c语言时间设置函数(8页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! 一、tm结构在time.h中的定义如下:#ifndef _TM_DEFINEDstruct 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_wda

2、y; /* 星期 取值区间为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二、time函数1、计时:clock()Clock_t clock(void);在time.h中,我们可以找到队clock的定义:#ifndef _CLO

3、CK_T_DEFINEDtypedef long clock_t;#define _CLOCK_T_DEFINED#endif很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:#define CLOCKS_PER_SEC (clock_t)1000)可以看到可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:void elapsed_time()printf(Elap

4、sed time:%u secs.n,clock()/CLOCKS_PER_SEC);当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:#include “stdio.h”#include “stdlib.h”#include “time.h”int main( void ) long i = 10000000L; clock_t start, finish; double duration; /* 测量一个事件持续的时间*/ printf( Time to do %ld empty loops is , i ); start = clock(); wh

5、ile( i- ) ; finish = clock(); duration = (double)(finish - start) / CLOCKS_PER_SEC; printf( %f secondsn, duration ); system(pause);在笔者的机器上,运行结果如下:Time to do 10000000 empty loops is 0.03000 seconds上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准

6、C/C+中,最小的计时单位是一毫秒。2、获得日历时间time_t time(time_t * timer);在time.h中,我们也可以看到time_t是一个长整型数:#ifndef _TIME_T_DEFINEDtypedef long time_t; /* 时间值 */#define _TIME_T_DEFINED /* 避免重复定义 time_t */#endif3、获得日期和时间3、1gmtime函数或localtime函数将time_t类型的时间日期转换为struct tm类型:使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据其值确定具体的年、月、日等数据。

7、gmtime函数可以方便的对time_t类型数据进行转换,将其转换为tm结构的数据方便数据阅读。gmtime函数的原型如下:struct tm *gmtime(time_t *timep);localtime函数的原型如下:struct tm *localtime(time_t *timep);将参数timep所指的time_t类型信息转换成实际所使用的时间日期表示方法,将结果返回到结构tm结构类型的变量。gmtime函数用来存放实际日期时间的结构变量是静态分配的,每次调用gmtime函数都将重写该结构变量。如果希望保存结构变量中的内容,必须将其复制到tm结构的另一个变量中。gmtime函数与

8、localtime函数的区别:gmtime函数返回的时间日期未经时区转换,是UTC时间(又称为世界时间,即格林尼治时间)。localtime函数返回当前时区的时间,转换日期时间表示形式time_t类型转换为struct tm类型示例:#include#includeint main()char *wday=Sun,Mon,Tue,Wed,Thu,Fri,Sat;/*指针字符数组*/time_t t;struct tm *p;t=time(NULL);/*获取从1970年1月1日零时到现在的秒数,保存到变量t中*/p=gmtime(&t); /*变量t的值转换为实际日期时间的表示格式*/prin

9、tf(%d年%02d月%02d日,(1900+p-tm_year), (1+p-tm_mon),p-tm_mday);printf( %s , wdayp-tm_wday);printf(%02d:%02d:%02dn, p-tm_hour, p-tm_min, p-tm_sec);return 0;注意:p=gmtime(&t);此行若改为p=localtime(&t);则返回当前时区的时间3、2使用mktime函数将struct tm类型的时间日期转换为time_t类型:表头文件#include定义函数time_t mktime(strcut tm * timeptr);函数说明mktim

10、e()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0秒算起至今的UTC时间所经过的秒数。返回值返回经过的秒数。换为秒数示例:#include#includeint main()time_t t;struct tm stm;printf(请输入日期时间值(按yyyy/mm/dd hh:mm:ss格式):);scanf(%d/%d/%d %d:%d:%d,&stm.tm_year,&stm.tm_mon,&stm.tm_mday,&stm.tm_hour,&stm.tm_min,&stm.tm_sec);stm.tm_year-=1900; /*年份值减去190

11、0,得到tm结构中保存的年份序数*/stm.tm_mon-=1;/*月份值减去1,得到tm结构中保存的月份序数*/t=mktime(&stm);/*若用户输入的日期时间有误,则函数返回值为-1*/if(-1=t)printf(输入的日期时间格式出错!n);exit(1);printf(1970/01/01 00:00:00%d/%02d/%02d %02d:%02d:%02d共%d秒n,stm.tm_year+1900,stm.tm_mon,stm.tm_mday,stm.tm_hour,stm.tm_min,stm.tm_sec,t);return 0;3、3原型:char *asctime

12、(const struct tm *tblock);功能说明:将tm结构类型时间日期转换为ASCII码。头文件:time.h参数说明:语法:asctime必要参数必要参数的具体说明如下:tblock:待转换的时间指针,tblock为一tm结构型指针。返回值:返回由tm结构中的日期和时间转换成的字符串的地址,该字符串的形式定义如下:DDD MMM dd hh:mm:ss YYYY各字符的意义:DDD一星期的某一天,如MonMMM月份,如Jandd月中一天(1,2,31)hh小时(1,2,24)mm分钟(1,2,59)ss秒数(1,2,59)YYYY年范例:转换日期和时间为ASCII码#inclu

13、de#includeint main()time_t t;struct tm *p;t=time(NULL);p=localtime(&t);printf(%sn, asctime(p);return 0;char * ctime(const time_t *timer);功能说明:通过日历时间来生成时间字符串。头文件:time.h4、计算持续的时间长度有时候在实际应用中要计算一个事件持续的时间长度,比如计算打字速度。在第1节计时部分中,我已经用clock函数举了一个例子。Clock()函数可以精确到毫秒级。同时,我们也可以使用difftime()函数,但它只能精确到秒。该函数的定义如下:double difftime(time_t time1, time_t time0);虽然该函数返回的以秒计算的时间间隔是double类型的,但这并不说明该时间具有同double一样的精确度,这是由它的参数觉得的(time_t是以秒为单位计算的)。比如下面一段程序:#include “time.h”#include “stdio.h”#include “stdlib.h”int main(void)time_t start,end;start = time(NULL);system(pause);end = time(NULL);printf(The pause used %f seconds

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号