time头文件
1 三种基本类型
1.1 time_t 类型
- 含义:表示从 1970 - 01 -01 0 : 0 : 0 开始到现在系统时间所经过的总秒数
- 精度:秒
- 获取方式:调用函数
time()
,返回值为长整型
//time_t 结构体的定义
#define _TIME_T_DEFINED
#ifdef _USE_32BIT_TIME_T
typedef __time32_t time_t;
#else
typedef __time64_t time_t;
#endif
#endif
1.2 timeval 类型
- 含义:提取系统当前时间,把时间分为秒和微秒两部分填充到结构体
struct timeval
中,并把当地的时区填充到结构体struct timezone
中 - 精度:秒、微秒
- 获取方式:调用函数
mingw_gettimeofday()
,返回值为整形(0:成功/-1:失败)
//timeval 结构体定义
#ifndef _TIMEVAL_DEFINED
#define _TIMEVAL_DEFINED
struct timeval{
long tv_sec;
long tv_usec;
};
1.3 tm 类型
- 含义:返回当前系统的时间信息,包括年、月、日、时、分、秒、星期、一年第几天、夏令时
- 精度:秒
- 获取方式:调用函数
localtime()
,返回值类型为结构体struct tm
#ifndef _TM_DEFINED
#define _TM_DEFINED
struct tm {
int tm_year; //年份差值 - 等于当前年份与 1990 年的差值
int tm_mon; //月份 - 从一月开始(0表示一月),取值范围 [0,11]
int tm_mday; //天数 - 一个月中的日期,取值范围 [1,31]
int tm_hour; //小时 - 取值区间 [0,59]
int tm_min; //分钟 - 取值区间 [0,59]
int tm_sec; //秒钟 - 取值区间 [0,59]
int tm_wday; //星期 - 取值区间 [0,6],0 表示星期天
int tm_yday; //一年中第几天 - 从一月一日开始算,取值区间 [0,365]
int tm_isdst; //是否实行夏令时 (实行:正 / 不实行:0 / 不了解:负)
};
#endif
2 相关函数的使用
2.1 time() 函数
-
定义:
time_t __cdecl time(time_t *_Time);
-
功 能: 获取当前的系统时间,返回值为
long long int
,表示从1970年1月1日00:00:00 到当前时刻的秒数。调用localtime()
可以转换为当地时间
time_t timer;
printf("time = %lld\n", time(&timer));
//time = 1636945176
2.2 localtime() 函数
- 定义:
struct tm *__cdecl localtime(const time_t*_Time);
- 功能: 从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为日历
time_t timer;
struct tm *Now = localtime(&timer);
printf("Year : %d\n", Now->tm_year + 1900);
printf("Month : %d\n", Now->tm_mon + 1);
printf("Day : %d\n", Now->tm_mday);
printf("Hour : %d\n", Now->tm_hour);
printf("Minute : %d\n", Now->tm_min);
printf("Second : %d\n", Now->tm_sec);
printf("The day is %dth in a week\n", Now->tm_wday);
printf("The day is %dth in a year\n", Now->tm_yday);
printf("Summer time %d\n", Now->tm_isdst);
/**
* Year : 2021
* Month : 11
* Day : 15
* Hour : 11
* Minute : 1
* Second : 5
* The day is 1th in a week
* The day is 318th in a year
* Summer time 0
*/
2.3 asctime() 函数
- 定义:
char *__cdecl asctime(const struct tm *_Tm);
- 功能:将时间和日期转化为为相对应的字符串
2.4 gmtime() 函数
- 定义:
struct tm *__cdecl _gmtime(const __time32_t *_Time) ;
- 功能:将日期和时间转换为格林威治(GMT)时间
time_t timer;
struct tm *GMT, *Area;
timer = time(NULL);
Area = localtime(&timer);
GMT = gmtime(&timer);
printf("Local time: %s", asctime(Area));
printf("GMT time: %s", asctime(GMT));
//Local time: Mon Nov 15 03:07:52 2021
//GMT time: Mon Nov 15 03:07:52 2021
2.5 difftime() 函数
- 定义:
double __cdecl difftime(time_t _Time1,time_t _Time2);
- 功能:计算两个时间的差值
time_t timer1, timer2;
time(&timer1);
_sleep(3000);
time(&timer2);
double res = difftime(timer1, timer2);
printf("time1 - time = %f", res);
//time1 - time = -3.000000