文章目录
基本关系
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]