c++ time相关知识

版权声明:转载请注明出处。作者:两仪织,博客地址:http://blog.csdn.net/u013894427 https://blog.csdn.net/u013894427/article/details/84142232

基本关系

time_t&tm&time_str之间的关系
在这里插入图片描述

相关函数

time()

time()是最重要的一个函数,这个函数返回的是 1970年1月1日UTC时间0点0分0秒到现在所经过的秒数

函数原型

time_t time(time_t *t);

time_t跟size_t以及wchar_t都一样,表示的是一个无符号整形值,可以存储time返回的最大值。

asctime()

asctime()作用是把tm结构体转换为字符串格式输出。

函数原型

char * asctime(const struct tm * timeptr);

gmtime()

gmtime()函数的作用是把从time中获取的秒数转换为UTC时区的时间,存储在tm结构中.

函数原型

struct tm *gmtime(const time_t *timep);

localtime()

localtime()函数的作用是把从time中获取的时间秒数转换为特定时区的时间,存储在tm结构中

函数原型

struct tm *localtime(const time_t * timep);

ctime()

ctime以“Wed Jun 30 21 :49 :08 1993\n”。格式输出当前本地时间字符串

char *ctime(const time_t *timep);

ctime(&time_p)相当于asctime(localtime(time(&time_p)))

mktime()

mktime函数的作用和和gmtime的作用刚好相反,把tm结构体转换为time返回值

time_t mktime(strcut tm * timeptr);

settimeofday() 和gettimeofday()

settimeofday() 设置当前时间,只有管理员可以用。

gettimeofday() 这个函数一般作用是来获取程序执行时间的。很奇怪,我在公司的服务器上没有找到这个函数,因此后面的例子中没有这两个函数。

函数原型

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

相关数据结构和结构体

time_t

time_t是Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。

time_str

time_str不是c++的结构体名字,是我自己这么定义time相关函数中的时间字符串输出格式

"Wed Jun 30 21 :49 :08 1993\n"

tm

C++中的时间结构体

struct tm {
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;
};
  • int tm_sec 代表目前秒数,正常范围为0-59,但允许至61 秒
  • int tm_min 代表目前分数,范围0-59
  • int tm_hour 从午夜算起的时数,范围为0-23
  • int tm_mday 目前月份的日数,范围01-31
  • int tm_mon 代表目前月份,从一月算起,范围从0-11
  • int tm_year 从1900 年算起至今的年数
  • int tm_wday 一星期的日数,从星期一算起,范围为0-6
  • int tm_yday 从今年1 月1 日算起至今的天数,范围为0-365
  • int tm_isdst 日光节约时间的旗标
    此函数返回的时间日期未经时区转换,而是UTC时间。

timeval

时间间隔结构体,第一个表示秒,第二个表示微秒

struct timeval
{
    time_t tv_sec; /* Seconds. */
    suseconds_t tv_usec; /* Microseconds. */
};

timezone

时区结构体,tz_minuteswest表示和格林尼治时间差了多少分钟,tz_dsttime表示夏令时

struct timezone {  
    int tz_minuteswest;     /* minutes west of Greenwich */  
    int tz_dsttime;         /* type of DST correction */  
};  

实例

#include <stdio.h>
#include <unistd.h>
#include <time.h>

int main(int argc,char** argv){
	time_t v_t;
	time(&v_t);
	printf("\n");
	printf("------------time()-----------\n");
	printf("\n");
	printf("the time func return [%d] \n",(int)v_t);
	tm *v_tm;
	v_tm=gmtime(&v_t);
	printf("\n");
	printf("------------gmtime func result-----------\n");
	printf("\n");
	printf("gmtime func v_tm->tm_year is [%d] \n",v_tm->tm_year);
	printf("gmtime func v_tm->tm_mon is [%d] \n",v_tm->tm_mon);
	printf("gmtime func v_tm->tm_mday is [%d] \n",v_tm->tm_mday);
	printf("gmtime func v_tm->tm_hour is [%d] \n",v_tm->tm_hour);
	printf("gmtime func v_tm->tm_min is [%d] \n",v_tm->tm_min);
	printf("gmtime func v_tm->tm_sec is [%d] \n",v_tm->tm_sec);
	printf("gmtime func v_tm->tm_wday is [%d] \n",v_tm->tm_wday);
	printf("gmtime func v_tm->tm_yday is [%d] \n",v_tm->tm_yday);
	printf("gmtime func v_tm->tm_isdst is [%d] \n",v_tm->tm_isdst);
	printf("asctime func use gmtime tm [%s",asctime(v_tm));
	v_tm=localtime(&v_t);
	printf("\n");
	printf("------------localtime func result-----------\n");
	printf("\n");
	printf("localtime func v_tm->tm_year is [%d] \n",v_tm->tm_year);
	printf("localtime func v_tm->tm_mon is [%d] \n",v_tm->tm_mon);
	printf("localtime func v_tm->tm_mday is [%d] \n",v_tm->tm_mday);
	printf("localtime func v_tm->tm_hour is [%d] \n",v_tm->tm_hour);
	printf("localtime func v_tm->tm_min is [%d] \n",v_tm->tm_min);
	printf("localtime func v_tm->tm_sec is [%d] \n",v_tm->tm_sec);
	printf("localtime func v_tm->tm_wday is [%d] \n",v_tm->tm_wday);
	printf("localtime func v_tm->tm_yday is [%d] \n",v_tm->tm_yday);
	printf("localtime func v_tm->tm_isdst is [%d] \n",v_tm->tm_isdst);
	printf("asctime func use localtime tm [%s",asctime(v_tm));
	printf("\n");
	printf("------------ctime func result-------------\n");
	printf("\n");
	printf("ctime result is [%s",ctime(&v_t));
	printf("\n");
	printf("------------mktime func result-----------\n");
	printf("\n");
	printf("mktime result is [%d] \n",(int)mktime(v_tm));
	return 1;
}

返回结果为


------------time()-----------

the time func return [1542358166] 

------------gmtime func result-----------

gmtime func v_tm->tm_year is [118] 
gmtime func v_tm->tm_mon is [10] 
gmtime func v_tm->tm_mday is [16] 
gmtime func v_tm->tm_hour is [8] 
gmtime func v_tm->tm_min is [49] 
gmtime func v_tm->tm_sec is [26] 
gmtime func v_tm->tm_wday is [5] 
gmtime func v_tm->tm_yday is [319] 
gmtime func v_tm->tm_isdst is [0] 
asctime func use gmtime tm [Fri Nov 16 08:49:26 2018

------------localtime func result-----------

localtime func v_tm->tm_year is [118] 
localtime func v_tm->tm_mon is [10] 
localtime func v_tm->tm_mday is [16] 
localtime func v_tm->tm_hour is [16] 
localtime func v_tm->tm_min is [49] 
localtime func v_tm->tm_sec is [26] 
localtime func v_tm->tm_wday is [5] 
localtime func v_tm->tm_yday is [319] 
localtime func v_tm->tm_isdst is [0] 
asctime func use localtime tm [Fri Nov 16 16:49:26 2018

------------ctime func result-------------

ctime result is [Fri Nov 16 16:49:26 2018

------------mktime func result-----------

mktime result is [1542358166] 

猜你喜欢

转载自blog.csdn.net/u013894427/article/details/84142232
今日推荐