第三季-第10课-时间编程

落花浮王杯 提交于 2019-11-27 05:04:40

第10课-时间编程

 

10.1 时间类型

Codinated Universal Time(UTC):世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。

Calendar Time:日历时间,是用“从一个标准时间点(如:1970年1月1日0点)到此经过的秒数”来表示的时间。

10.2 函数学习

这里面的函数学习方法是和之前的学习方法一致的,即三步学习法:函数名;函数原型;函数使用。

1. 获取日历时间

(1) 函数名

time

(2) 函数原形

time_t time(time_t *t);

(3) 函数功能

返回日历时间

(4) 所属头文件

#include<time.h>

(5) 返回值

成功:日历时间

失败:-1

(6) 参数说明

t:不为空的情况下保存返回值。

(7) 范例程序

#include<time.h>

void main()

{                

         time_t ctime;

         ctime = time(NULL);

         printf("ctime is %d\n",ctime);

}

2. 获取格林威治时间

(1) 函数名

gmtime

(2) 函数原形

struct tm *gmtime(const time_t *timep);

(3) 函数功能

将参数timep所指定的日历时间抓华为标准时间。

(4) 所属头文件

#include<time.h>

(5) 返回值

strict tm

{

int tm_sec;             //seconds

int tm_min;            //minutes

int tm_hour;           //hours

int tm_mday;                        //day of the month

int tm_mon;            //month

int tm_year;            //year

int tm_wday;           //day of the week

int tm_yday;           //day in the year

int tm_isdst;           //daylight saving time

};

成功:世界标准时间,以struct tm形式存储的

失败:NULL

(6) 参数说明

timep:带转化的世界时间

(7) 范例程序

#include<time.h>

void main()

{                

         time_t ctime;

         struct tm *tm;

         ctime = time(NULL);

         //将日历时间转化为标准时间

         tm = gmtime(&ctime);

         printf("now is hour %d,min is %d\n",tm->tm_hour,tm->tm_min);

        //注意对于结构体内的成员的标识方法。

}

3. 获取本地时间

(1) 函数名

localtime()

(2) 函数原形

struct tm *localtime(const time_t *timep);

(3) 函数功能

将参数timep所指向的日历时间转化为本地时间。

(4) 所属头文件

#include<time.h>

(5) 返回值

strict tm

{

int tm_sec;             //seconds

int tm_min;            //minutes

int tm_hour;           //hours

int tm_mday;                       //day of the month

int tm_mon;            //month

int tm_year;            //year

int tm_wday;           //day of the week

int tm_yday;           //day in the year

int tm_isdst;           //daylight saving time

};

成功:返回以结构体tm存储的本地时间

失败:NULL

(6) 参数说明

timep:待转化的日历时间

(7) 范例程序

#include<time.h>

void main()

{                

         time_t ctime;

         struct tm *tm;

         ctime = time(NULL);

         //将日历时间转化为本地时间

         tm = localtime(&ctime);

         printf("now is hour %d,min is %d\n",tm->tm_hour,tm->tm_min);

}

注:为了验证我们的程序是正确的,我们可以通过date命令来查看时间,会发现和我们上面程序打印出来的时间是一样的。

4. 字符串(格式化)方式显示时间

(1) 函数名

asctime

(2) 函数原形

char *asctime(const struct tm *tm);

(3) 函数功能

将struct tm格式的时间转化为字符串

(4) 所属头文件

#include<time.h>

(5) 返回值

字符串方式显示的时间

(6) 参数说明

tm:待转化的tm格式的时间

(7) 范例程序

#include<time.h>

void main()

{                

         time_t ctime;

         struct tm *tm;

         char *stime;

         ctime = time(NULL);

         //将日历时间转化为本地时间

         tm = gmtime(&ctime);

         printf("now is hour %d,min is %d\n",tm->tm_hour,tm->tm_min);

         stime = asctime(tm);

         printf("time is %s\n",stime);

}

5. 获取高精度时间

(1) 函数名

gettimeofday();

(2) 函数原形

int gettimeofday(struct timeval *tv, strct timezone *tz);

(3) 函数功能

获取高精度的时间。

(4) 所属头文件

#include<sys/time.h>

(4) 返回值

成功:0;

失败:-1

(6) 参数说明

struct timeval

{

time_t       tv_sec;     //seconds

Suseconds_t  tv_usec;    //microseconds

}

strutct timezone

{

int  tz_minuteswest;      //minutes west of Greewich

int  tz_dsttime;          //type of DST correction

}

tv:保存从1970年1月1日0:0:0到现在经历的秒数和微秒数;

tzone:通常为NULL

(7) 范例程序

下面的程序用来检测func()函数运行的时间,这里我们用了头文件#include<stdio.h>,因为NULL符号的使用需要这个头文件。

#include<sys/time.h>

#include<stdio.h>

void func()

{

         int i,j;

         int ret;

         for(i=0;i<1000;i++)

                  for(j=0;j<1000;j++)

                           ret = j;

}

void main()

{

         int i,j;

         struct timeval tv1;

         struct timeval tv2;

         gettimeofday(&tv1,NULL);

         func();

         gettimeofday(&tv1,NULL);

    i = tv2.tv_sec-tv1.tv_sec;

         j = tv2.tv_usec-tv1.tv_usec;

         printf("sec is %d,usec is%d\n",i,j);

}

10.3 总结

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!