c语言time_t ,tm都是些什么类型

Python016

c语言time_t ,tm都是些什么类型,第1张

下面是粘贴的哈,将就着看,time_t ---long tm是结构体。

typedef __kernel_time_t time_t

typedef long__kernel_time_t

struct tm {

164 /*

165 * the number of seconds after the minute, normally in the range

166 * 0 to 59, but can be up to 60 to allow for leap seconds

167 */

168 int tm_sec

169 /* the number of minutes after the hour, in the range 0 to 59*/

170 int tm_min

171 /* the number of hours past midnight, in the range 0 to 23 */

172 int tm_hour

173 /* the day of the month, in the range 1 to 31 */

174 int tm_mday

175 /* the number of months since January, in the range 0 to 11 */

176 int tm_mon

177 /* the number of years since 1900 */

178 long tm_year

179 /* the number of days since Sunday, in the range 0 to 6 */

180 int tm_wday

181 /* the number of days since January 1, in the range 0 to 365 */

182 int tm_yday

183 }

学习忌贪多、忌浮躁、忌急功近利。把学习计划放的长一些,培养一个好的学习方法,一步一步慢慢走,终能成为高手。C语言是难,但是C语言很重要。如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程庌輌这简直就是天方夜谭。为什么C语言如此重要呢?

第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。

第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。

第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl...哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。

所以,如果你以后打算干IT行业,C语言的学习是必不可少的。加油~~

以前实际上用过,很想对C语言中的时间函数了解多一点,趁着这个寒假,查了些资料,大概把我现在能用到的关于时间的操作在此记录下来。通过几个函数来熟悉C语言中对时间的操作。(注:以下程序均在VS2010上编译通过。)①time()函数。可以通过time()函数来获得日历时间。其原型为:time_t time(time_t *timer)一般参数为空,返回值类型time_t是一个长整型数,函数将返回现在的日历时间,即从一个时间点(所有不同版本的Visual C++都是从1970年1月1日0时0分0秒)到现在的经过的秒数。例子程序:#include<stdio.h>#include<time.h>void main(){ time_t ltlt=time(NULL)printf("1970年1月1日0时0分0秒到现在经历了%ld秒%A",lt)}运行结果(结果与程序运行的时间有关,贴出我此时运行出的结果):1970年1月1日0时0分0秒到现在经历了1326975564秒请按任意键继续. . .②clock()函数。C语言中的计时函数。函数原型为:clock_t clock(void)clock()函数返回从“开启这个程序进程\”到“程序中调用clock()函数”时之间的CPU时钟计时单元数。返回值类型clock_t也是一个长整型数。在time.h头文件中定义了一个符号常量CLOCKS_PER_SEC,表示一秒钟会有多少个计时单元。所以通过简单的数学知识,可以知道在程序中用clock()/CLOCKS_PER_SEC来表示程序从开始到调用clock()函数时用了多少秒。例子程序:#include<stdio.h>#include<time.h>void main(){ clock_t ltfor(int i=0i<1000000000i++)lt=clock()printf("循环执行1000000000个空操作需要%f秒%A",(double)lt/CLOCKS_PER_SEC)}运行结果(在不同的机器上运行的结果可能不一样,下面是在我自己的笔记本上运行的结果):循环执行1000000000个空操作需要3.484000秒请按任意键继续. . .③使用C库函数来显示日期和时间。首先要介绍一下C语言中的一个日期的结构体类型,tm类型。其在time.h中的定义如下:#ifndef _TM_DEFINEDstruct tm {int tm_sec int tm_min int tm_hour int tm_mday int tm_mon int tm_year int tm_wday int tm_yday int tm_isdst }#define _TM_DEFINED#endif然后可以介绍有关的函数了。time.h提供了两种不同的函数将日历时间(一个长整型数)转换成我们平时看到的把年月日时分秒分开的时间格式: struct tm *gmtime(const time_t *timer) struct tm *localtime(const time_t *timer)其中gmtime()函数是将日历时间转换为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将日历时间转换为本地时间(在中国地区获得的本地时间会比世界标准时间晚8个小时)。例子程序:#include<stdio.h>#include<time.h>void main(){ struct tm *localtime_t tt=time(NULL)local=localtime(&t)printf("现在北京时间是%d点%A",local->tm_hour)local=gmtime(&t)printf("世界标准时间是%d点%A",local->tm_hour)}运行结果(运行结果与运行的时间有关,我是在早上9点多钟运行这个程序的):现在北京时间是9点世界标准时间是1点请按任意键继续. . .这样子我们就可以完全才输出此刻的年月日时分秒了,当然需要逐个来输出。其实C库函数还提供了一个很有用的以固定的时间格式来输出年月日时分秒的函数。这两个函数原型如下: char *asctime(const struct tm *timeptr) char *ctime(const time_t *timer)asctime()函数是通过tm结构来生成具有固定格式的保存时间信息的字符串,而ctime()是通过日历时间来生成时间字符串。这样下面的例子程序就容易理解了:#include<stdio.h>#include<time.h>void main(){ struct tm *localtime_t tt=time(NULL)local=localtime(&t)printf(asctime(local))local=gmtime(&t)printf(asctime(local))printf(ctime(&t))}运行结果(我是在早上9点多运行这个程序的):Fri Jan 20 09:55:56 2012Fri Jan 20 01:55:56 2012Fri Jan 20 09:55:56 2012请按任意键继续. . .C语言还可以以我们规定的各种形式来规定输出时间的格式。要用到时可以查阅相关的资料,限于篇幅,就介绍到这里。④这里介绍计算持续的时间长度的函数。之前已经介绍了使用clock()函数的例子,它可以精确到毫秒级。其实我们也可以使用difftime()函数,但它只精确到秒。该函数的定义如下: double difftime(time_t time1,time_t time0)例子程序:#include<stdio.h>#include<time.h>#include<stdlib.h>void main(){ time_t start,endstart=time(NULL)for(int i=0i<1000000000i++)end=time(NULL)printf("这个循-环用了%f秒%A",difftime(end,start))}运行结果:这个循环用了3.000000秒请按任意键继续. . .⑤最后介绍mktime()函数。原型如下: time_t mktime(struct tm *timer)可以使用函数将用tm结构表示的时间转换为日历时间。其返回值就是转换后的日历时间。这样我们就可以先制定一个分解时间,然后对这个时间进行操作。下面的例子用来计算2012年1月20日是星期几:#include<time.h>#include<stdio.h>#include<stdlib.h>int main(void){ struct tm ttime_t t_of_dayt.tm_year=2012-1900t.tm_mon=0t.tm_mday=20t.tm_hour=0t.tm_min=12t.tm_sec=1t.tm_isdst=1t_of_day=mktime(&t)printf(ctime(&t_of_day))return 0}运行结果:Fri Jan 20 00:12:01 2012请按任意键继续. . .