“time.h”

1、简介

time.h是c/c++中的日期头文件

struct tm,time_t和clock_t是三个表示时间的数据类型。clock_t用于表示计时时间,得到从程序启动到此次函数调用时累计的毫秒数。 time_t表示某种日历时间。

此外,这里还定义了一个表示本地时间的结构 struct tm,它包含以下结构成员:

Member Description
int tm_hour hour (0 – 23)
int tm_isdst 夏令时enabled (> 0), disabled (= 0), or unknown (< 0)
int tm_mday day of the month (1 – 31)
int tm_min minutes (0 – 59)
int tm_mon month (0 – 11, 0 = January)
int tm_sec seconds (0 – 60, 60 = Leap second)
int tm_wday day of the week (0 – 6, 0 = Sunday)
int tm_yday day of the year (0 – 365)
int tm_year year since 1900

2、从计算机系统时钟获取时间的方式

    (1) time_t time(time_t* timer)

     求出当时的日历时间,(从某个确定的时刻开始计时的时间)。如果timer不是NULL,那么同时也通过这个指针赋值,在无法得到有关时间信息时返回-1.

    (2) clock_t clock(void)

    得到从程序启动到此次函数调用时累计的毫秒数。用clock/CLOCKS_PER_SEC得到的是以秒数计的时间,在无法得到有关时间信息时返回-1.

3、三种时间日期数据类型的转换函数

1)函数原型:struct tm* gmtime(const time_t * timer)

      由*timer表示的日历时间出发,转换得到与之对应的国际标准时间,将转换结果存入一个静态的tm结构体变量中,返回这个结构的地址,如果无法表示就返回NULL

	time_t t;
	struct tm *gmt;
	t = time(NULL);
	printf("time_t is %s",ctime(&t));
	gmt = gmtime(&t);
	printf("tm is %s:",asctime(gmt));

2)函数原型:sruct tm* localtime(const time_t* timer)
      由*timer表示的日历时间出发,转换为与之对应的本地时间,将其存放在一个静态的tm结构体变量中,返回这一结构体的地址。

	time_t t;
	struct tm *gmt,*localt;

	t = time(NULL);
	printf("time_t is %s",ctime(&t));

	gmt = gmtime(&t);
	printf("gmt is %s",asctime(gmt));

	localt = localtime(&t);
	printf("localt is %s",asctime(localt));
 
结果:

上面是三个函数打印的结果,可以对比一下gmtime和locaktime的区别。

3)函数原型:time_t mktime(struct tm * tp)

从结构*tp表示的局部时间转化为与之对应的日历时间,如果不能得到结果就返回-1.

	time_t t;
	struct tm *tp;
	t = time(NULL);
	tp = localtime(&t);
	printf("tm is %s",asctime(tp));
	t = mktime(tp);
	printf("time_t is %s",ctime(&t));

4、时间日期数据的格式化函数

1)函数原型:char* asctime(struct tm * tp)

     由结构*tp表示的时间输出为字符串,结果格式为"Www Mmm dd hh:mm:ss yyyy",即“周几 月份数 日数 小时数:分钟数:秒数 年分数”(最后有一个 换行字符和表示字符串结束的空字符,也保存在字符变量里:Sun Oct 4 18:00:00 1998\n\0)

2)函数原型:char* ctime(const time_t * timet)

  把日历时间time_t输出到字符串,输出格式与asctime一样,等价于asctime(localtime(tp))

5、time函数介绍

1)函数原型:double difftime(time_t  t2, time_t  t1)

     参数说明:t1为机器时间开始时间,t2为机器时间结束时间

      函数功能:求出两个日历时间的差,以秒计算

     函数返回:时间差,单位为秒

	time_t t1 , t2;
	t1 = time(NULL);
	Sleep(1000);
	t2 = time(NULL);
	printf("Difftimeis:%f",difftime(t2,t1));

注:使用Sleep时应该包含"Windows.h"和"dos.h"头文件

你可能感兴趣的:(c语言学习笔记)