time_t
定义于头文件 <time.h>
typedef /* unspecified */ time_t;
time函数
是指返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数的函数,主要用来获取当前的系统时间,返回的结果是一个time_t类型。
struct tm
定义于头文件 <time.h>
struct tm
{
int tm_sec; // 秒:取值区间为[0,59]
int tm_min; // 分:取值区间为[0,59]
int tm_hour; // 时:取值区间为[0,23]
int tm_mday; // 日期:一个月中的日期:取值区间为[1,31]
int tm_mon; // 月份:(从一月开始,0代表一月),取值区间为[0,11]
int tm_year; // 年份:其值等于实际年份减去1900
int tm_wday; // 星期:取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推
int tm_yday; // 从每年的1月1日开始的天数:取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推
int tm_isdst; // 夏令时标识符,该字段意义不大
};
localtime函数
localtime 函数用于把 time_t 表示的时间转换为 struct tm 结构体表示的时间,函数返回struct tm结构体的地址
mktime函数
mktime 函数用于把 struct tm 表示的时间转换为 time_t 表示的时间,返回time_t
测试
#include <time.h>
#include <stdio.h>
#include <string.h>
int main(){
time_t tNow = time(NULL);
//打印自1970年到现在的秒数
printf("second from 1970 :%lld\n",tNow);
//将time_t转化struct tm,获取当前时间
struct tm *pTm = localtime(&tNow);
printf("current time:%04d-%02d-%02d %02d:%02d:%02d\n",1900+pTm->tm_year,1+pTm->tm_mon,pTm->tm_mday,pTm->tm_hour,pTm->tm_min,pTm->tm_sec);
//打印10分钟后时间
time_t t10MinLater = tNow+10*60;
struct tm *pTm10 = localtime(&t10MinLater);
printf("time after 10 mintues:%04d-%02d-%02d %02d:%02d:%02d\n",1900+pTm10->tm_year,1+pTm10->tm_mon,pTm10->tm_mday,pTm10->tm_hour,pTm10->tm_min,pTm10->tm_sec);
//struct tm转化time_t,由指定的时间得到time_t
struct tm tmT;
memset((char*)&tmT,0,sizeof(struct tm));
tmT.tm_year = 2020-1900;
tmT.tm_mon = 4-1;
tmT.tm_mday = 12;
tmT.tm_hour = 7;
tmT.tm_min = 55;
tmT.tm_sec = 55;
tmT.tm_isdst = 0;
printf("2020-04-12 07:55:55 is %lld\n",mktime(&tmT));
return 0;
}
