1、它们两个都包含在头文件
#include<ctime>
2、time_t:time_t表示的时间(日历时间)是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数,可以采用以下函数直接获取从1970到现在的秒数,方便相关数学计算:
time_t time(time_t* t);//取得从1970年1月1日至今的秒数
3、tm:在标准C/C++中,我们可通过tm(实际上是一种数据结构)结构来获得日期和时间,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; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
};
4、字符串(const char*)转化为time_t格式:
char *p_time = "2013-07-04 15:04:23";
struct tm tm_time;
sscanf(p_time , "%4d-%2d-%2d %2d:%2d:%2d", &tm_time.tm_year, &tm_time.tm_mon, &tm_time.tm_mday,
&tm_time.tm_hour, &tm_time.tm_min, &tm_time.tm_sec);
time_t time = mktime(&tm_time);
5、time_t转化为tm:
#include<iostream>
#include<ctime>
int main()
{
const char* wday[] = { "Sun","Mon","Tue","Wed","Thu","Fri","Sat" };/*指针字符数组*/
time_t t(1343821734);
struct tm* p;
p = gmtime(&t); /*变量t的值转换为实际日期时间的表示格式*/
printf("%d年%02d月%02d日", (1900 + p->tm_year), (1 + p->tm_mon), p->tm_mday);
printf(" %s ", wday[p->tm_wday]);
printf("%02d:%02d:%02d\n", p->tm_hour, p->tm_min, p->tm_sec);
system("pause");
return 0;
}
注意,在vs2019编译器中须在预处理器加:_CRT_SECURE_NO_WARNINGS,否则报错
6、tm转化为time_t:采用mktime()函数进行转换
time_t mktime(struct tm* timeptr);
time_t与tm还会用到很多相关函数,在此不一一详细介绍。
下一期将介绍Qt中的QDataTime,用起来简直比c语言的time.h头文件舒服很多!!!!!!!!!!!