时间类型:
Coordinated Universal Time(UTC):世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。
Calendar Time:日历时间,是用“从一个标准时间点(如:1970年1月1日0点)到此时经过的秒数”来表示的时间。
1.1.获取日历时间
获取日历时间: time_t time(time_t *t);
所属头文件: time.h
返回值: 成功:返回日历时间 失败:((time_t) -1)
参数说明: t:不为空的情况保存返回值
- #include <time.h>
-
- void main()
- {
- time_t ctime;
-
- ctime = time(NULL);
-
- printf("time is %d.\n",ctime);
- }
1.2.获取世界标准时间: struct tm *gmtime(const time_t *timep);
将参数timep所指定的日历时间转化为世界标准时间
所属头文件: time.h
返回值: 成功:返回世界标准时间,以struct tm形式存储的 失败:-1
参数说明: timep:待转化的时间
注意:此处参数是time_t的指针
- #include <time.h>
-
- void main()
- {
- time_t ctime;
- struct tm *tm_p;
-
- ctime = time(NULL);
- /*将日历时间转化为世界标准时间*/
- tm_p = gmtime(&ctime);
-
- printf("UTC is %d:%d:%d.\n",tm_p->tm_hour,tm_p->tm_min,tm_p->tm_sec);
- }
1.3.获取本地时间: struct tm *localtime(const time_t *timep);
将参数timep所指定的日历时间转化为本地时间
所属头文件:
返回值: 成功:返回struct tm本地时间 失败:返回NULL
参数说明: timep:待转化的日历时间
- #include <time.h>
-
- void main()
- {
- time_t ctime;
- struct tm *tm_p;
-
- ctime = time(NULL);
-
- tm_p = localtime(&ctime);
- if(tm_p == NULL)
- {
- printf("get time failed.\n");
- return;
- }
-
- printf("localtime is %d:%d:%d.\n", tm_p->tm_hour,tm_p->tm_min, tm_p->tm_sec);
-
- }
1.4.以字符串方式显示时间:
char *asctime(const struct tm *tm);
将struct tm 格式的时间转化为字符串
所属头文件:
返回值: 成功:描述值 失败:-1
参数说明: tm:待转化的tm格式的时间
- #include <time.h>
-
- void main()
- {
- time_t ctime;
- struct tm *tm_p;
- char *tm_str;
-
- ctime = time(NULL);
-
- tm_p = localtime(&ctime);
-
- tm_str = asctime(tm_p);
- if(tm_str == NULL)
- {
- printf("asctime get failed.\n");
- return;
- }
-
- printf("asctime is %s",tm_str);
-
- }
1.5.获取高精度时间:
int gettimeofday(stuct timeval *tv,struct timezone *tzone);
获取高精度的时间
所属头文件:
返回值: 成功:0 失败:-1
参数说明: tv:保存从1970年1月1日0:0:0 到现在经历的秒数和微妙数
tzone:通常为NULL
这里我想定义一个结构体指针来实现,发现总是无法获取时间。ret一直是-1;
后来是需要对该指针开辟一个空间,才能使用。
- #include <time.h>
- #include <sys/time.h>
-
- void func()
- {
- int i,j;
- int ret = 0;
-
- for(i=0;i<1000;i++)
- for(j=0;j<1000;j++)
- ret++;
- }
-
- void main()
- {
- struct timeval *tv1_p;
- struct timeval tv2;
- int ret;
-
- tv1_p = (struct timeval*)malloc(sizeof(struct timeval));
- ret = gettimeofday(tv1_p , NULL);
- if(ret == -1)
- {
- printf("get time of day failed.\n");
- return;
- }
-
- func();
-
- ret = gettimeofday(&tv2 , NULL);
- if(ret == -1)
- {
- printf("get time of day failed.\n");
- return;
- }
-
- printf("seconds is %d\nmicroseconds is %d\n",tv1_p->tv_sec - tv2.tv_sec
- ,tv1_p->tv_usec - tv2.tv_usec);
-
- }
![](/attachment/201610/16/29512885_1476627701LA2k.png)