各位老铁们好,相信很多人对c语言时间函数怎么用都不是特别的了解,因此呢,今天就来为大家分享下关于c语言时间函数怎么用以及C语言中的time函数的参数的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
本文目录
一、c语言 时间函数
可以通过time()函数来获得日历时间(Calendar Time),其原型为:time_t time(time_t* timer);
如果已经声明了参数timer,可以从参数timer返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970年1月1日0时0分0秒)到现在此时的秒数。如果参数为空(NUL),函数将只通过返回值返回现在的日历时间,比如下面这个例子用来显示当前的日历时间:
这里说的日期和时间就是平时所说的年、月、日、时、分、秒等信息。从第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秒。
二、C语言中 *** 时间函数是怎么用的
1、C语言中读取 *** 时间的函数为time(),其函数原型为:
time_t就是long,函数返回从1970年1月1日(MFC是 *** 9年12月31日)0时0分0秒,到现在的的秒数。
2、C语言还提供了将秒数转换成相应的时间格式的函数:
char* ctime(const time_t*timer);//将日历时间转换成本地时间,返回转换后的字符串指针可定义字符串或是字符指针来接收返回值
struct tm* gmtime(const time_t*timer);//将日历时间转化为世界标准时间(即格林尼治时间),返回结构体指针可定义struct tm*变量来接收结果
struct tm* localtime(const time_t* timer);//将日历时间转化为本地时间,返回结构体指针可定义struct tm*变量来接收结果
pc=ctime(&t);printf("ctime:%s",pc);
pt=localtime(&t);printf("year=%d",pt->tm_year+1900);
inttm_sec;/*秒–取值区间为[0,59]*/
inttm_min;/*分-取值区间为[0,59]*/
inttm_ho *** ;/*时-取值区间为[0,23]*/
inttm_mday;/*一个月中的日期-取值区间为[1,31]*/
inttm_mon;/*月份(从一月开始,0 *** 一月)-取值区间为[0,11]*/
inttm_year;/*年份,其值等于实际年份减去1900*/
inttm_wday;/*星期–取值区间为[0,6],其中0 *** 星期天,1 *** 星期一,以此类推*/
inttm_yday;/*从每年的1月1日开始的天数–取值区间为[0,365],其中0 *** 1月1日,1 *** 1月2日,以此类推*/
inttm_isdst;/*夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
三、c语言sleep函数怎么用
用法: unsi *** ed sleep(unsi *** ed seconds);
1.在VC中使用带上头文件#include<windows.h>,在Linux下,gcc编译器中,使用的头文件因gcc版本的不同而不同#include<unistd.h>
2.在VC中,Sleep中的之一个英文字符为大写的"S",在linux下不要大写,在标准C中是sleep,不要大写,简单的说VC用Sleep,别的一律使用sleep。
3.在VC中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);在Linux下,sleep()里面的单位是秒,而不是毫秒。
功能:usleep功能把进程挂起一段时间,单位是微秒us(百万分之一秒)。
语法: void usleep(int micro_seconds);
注意:这个函数不能工作在 Windows *** 作 *** 中。
usleep()与sleep()类似,用于延迟挂起进程。进程被挂起放到reday queue。只是一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。且此函数已被废除,可使用nanosleep。
如果延迟时间为几十毫秒,或者更小,尽可能使用usleep()函数。这样才能更佳的利用CPU时间。
功能:将程序的执行暂停一段时间,单位是毫秒ms(千分之一秒)
用法: void delay(unsi *** ed milliseconds);
delay()是循环等待,该进程还在运行,占用处理器。
sleep()不同,它会被挂起,把处理器让给其他的进程。
四、请问C语言中clock()函数该怎么用
clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。
它的具体功能是返回处理器调用某个进程或函数所花费的时间。函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,其中clock_t是用来保存时间的数据类型。
在time.h文件中,我们可以找到对它的定义:
clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件滴答1000下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。
1、编译器优化,for循环实际根本没执行,直接跳过去了,所以时间为0。
2、clock计算的是程序占用cpu的时间,如果你的程序执行的动作很少,那么clock算出的时间也很少。
3、建议使用time gettimeofday函数来计时。
C语言中clock()函数的程序例1:(TC下运行通过)
printf("Thetimewas:%f\n",(double)(end-start)/CLK_TCK);
说明:CLK_TCK定义在TC中的time.h中:#defineCLK_TCK18.2。
在VC6.0中也有关于CLK_TCK的宏定义,不过其值不再是18.2,而是1000。
实际上在VC6.0中CLK_TCK已完全等同CLOCKS_PER_SEC。
参考资料来源:百度百科-clock()
五、C语言中获取时间的 *** 是什么
1、函数包括一系列日期和时间处理函数,它们都在头文件中说明。下面列出了这些函数。在头文件中定义了三种类型:time_t,struct tm和clock_t。
2、double difftime(time_t time1,time_t time2);
3、struct tm*gmtime(const time_t*timer);
4、struct tm*localtime(const time_t*timer);
5、char*asctime(const struct tm*timeptr);
6、char*ctime(const time_t*timer);
7、size_t strftime(char*s,size_t *** xsize,const char*for *** t,const struct tm*timeptr);
8、time_t mktime(struct tm*timeptr);
9、下面是我从网上收集到的时间函数集
10、asctime(将时间和日期以字符串格式表示)
11、time,ctime,gmtime,localtime
12、char* asctime(const struct tm* timeptr);
13、asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示 *** ,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:"Wed Jun 30 21:49:08 1993 *** ;n"
14、若再调用相关的时间日期函数,此字符串可能会被 *** 。此函数与ctime不同处在于传入的参数是不同的结构。
15、返回一字符串表示目前当地的时间日期。
16、printf("%s",asctime(gmtime(&timep)));
17、ctime(将时间和日期以字符串格式表示)
18、time,asctime,gmtime,localtime
19、char*ctime(const time_t*timep);
20、ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示 *** ,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为"Wed Jun 30 21:49:08 1993 *** ;n"。若再调用相关的时间日期函数,此字符串可能会被 *** 。
21、返回一字符串表示目前当地的时间日期。
22、gettimeofday(取得目前的时间)
23、time,ctime,ftime,settimeofday
24、int gettimeofday( struct timeval* tv, struct timezone* tz)
25、gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中。
26、int tz_minuteswest;/*和Greenwich时间差了多少分钟*/
27、int tz_dsttime;/*日光节约时间的状态*/
28、上述两个结构都定义在/usr/include/sys/time.h。tz_dsttime所 *** 的状态如下
29、DST_AUSTALT/*澳洲(1986年以后)*/
30、成功则返回0,失败返回-1,错误代码存于errno。附加说明EFAULT指针tv和tz所指的内存空间超出存取权限。
31、printf("tv_sec;%d *** ;n", tv,.tv_sec);
32、printf("tv_usec;%d *** ;n",tv.tv_usec);
33、printf("tz_minuteswest;%d *** ;n", tz.tz_minuteswest);
34、printf("tz_dsttime,%d *** ;n",tz.tz_dsttime);
35、struct tm*gmtime(const time_t*timep);
36、gmtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示 *** ,然后将结果由结构tm返回。
37、int tm_sec *** 目前秒数,正常范围为0-59,但允许至61秒
38、int tm_min *** 目前分数,范围0-59
39、int tm_ho *** 从午夜算起的时数,范围为0-23
40、int tm_mday目前月份的日数,范围01-31
41、int tm_mon *** 目前月份,从一月算起,范围从0-11
42、int tm_year从1900年算起至今的年数
43、int tm_wday一星期的日数,从星期一算起,范围为0-6
44、int tm_yday从今年1月1日算起至今的天数,范围为0-365
45、int tm_isdst日光节约时间的旗标
46、此函数返回的时间日期未经时区转换,而是UTC时间。
47、char*wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
48、printf("%d%d%d",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);
49、printf("%s%d;%d;%d *** ;n", wday[p->tm_wday], p->tm_ho *** , p->tm_min, p->tm_sec);
50、localtime(取得当地目前时间和日期)
51、struct tm*localtime(const time_t* timep);
52、localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示 *** ,然后将结果由结构tm返回。结构tm的定义请参考gmtime()。此函数返回的时间日期已经转换成当地时区。
53、返回结构tm *** 目前的当地时间。
54、char*wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
55、p=localtime(&timep);/*取得当地时间*/
56、printf("%d%d%d",(1900+p->tm_year),( l+p->tm_mon), p->tm_mday);
57、printf("%s%d:%d:%d *** ;n", wday[p->tm_wday],p->tm_ho *** , p->tm_min, p->tm_sec);
58、mktime(将时间结构数据转换成经过的秒数)
59、time,asctime,gmtime,localtime
60、time_t mktime(strcut tm* timeptr);
61、mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0秒算起至今的UTC时间所经过的秒数。
62、/*用time()取得时间(秒数),利用localtime()
63、转换成struct tm再利用mktine()将struct tm转换成原来的秒数*/
*** 、printf("time():%d *** ;n",timep);
65、printf("time()->localtime()->mktime():%d *** ;n",timep);
66、time()->localtime()->mktime():974943297
67、time,ctime,ftime,gettimeofday
68、int settimeofday( const struct timeval*tv,const struct timezone*tz);
69、settimeofday()会把目前时间设成由tv所指的结构信息,当地时区信息则设成tz所指的结构。详细的说明请参考gettimeofday()。注意,只有root权限才能使用此函数修改时间。
70、成功则返回0,失败返回-1,错误代码存于errno。
71、EPERM并非由root权限调用settimeofday(),权限不够。
72、EINVAL时区或某个数据是不正确的,无 *** 确设置时间。
关于c语言时间函数怎么用的内容到此结束,希望对大家有所帮助。