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
posted @ 2021-11-15 14:18  悟道九霄  阅读(825)  评论(0编辑  收藏  举报