头文件 :
#include<time.h>
time函数的返回值为time_t类型,他会返回从1970-1-1开始到现在所经过的秒数。
tm结构体,他为我们提供了一些成员去使用,其中year的值为当前的年份与1900年的差值,所以使用时应该 为tm_year + 1900,而且mon的范围为0-11,所以使用时应该 +1。
struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};
一般我们常用localtime()函数来使用这些定义好的成员,localtime的定义为 struct tm *localtime(const time_t *timep); 也就是说他的返回值的类型结构体tm的一个指针,其中的形参为一个time_t类型的指针,所以我们想使用localtime函数就需要先定义一个time_t类型的变量。同时也需要一个指针去接受localtime的返回值
time_t tt;
struct tm *timea
因为我们要使用时间,所以要给tt进行初始化,初始化的一般方式为:
tt = time(NULL);
接下来我们让tt成为localtime函数的形参,并且用上面定义的timea去接受他的返回值:
timea = localtime(&tt);
因为localtime的形参需要的是一个time_t类型的指针,所以我们要对tt进行取地址 &,此时,timea就变成了结构体tm的一个指针,可以直接使用它来指向tm结构体中的成员来进行使用,例如如果我们想打印当前的时间,则可以:
printf("%d-%d-%d %d:%d:%d",timea->tm_year+1900,timea->tm_mon+1,timea->tm_mday,
timea->tm_hour,timea->tm_min,timea->tm_sec);
用来打印当前时间。
举个例子:
#include<stdio.h>
#include<time.h>
int main(int argc, const char *argv[])
{
time_t tt;
struct tm *timee;
tt = time(NULL);
timee = localtime(&tt);
printf("%d-%d-%d %d:%d:%d\n",timee->tm_year+1900,timee->tm_mon+1,timee->tm_mday,timee->tm_hour,timee->tm_min,timee->tm_sec);
return 0;
}