参考博文:https://www.cnblogs.com/joeblackzqq/archive/2012/07/10/2584121.html
1、获取从1970年到现在的秒数(时间戳)
time_t time(time_t &timer); // 如果你已经声明了参数timer,你可以从参数timer返回现在的日历时间,同时也可以通过返回值返回现在的日历时间
例:time_t timestamp = time(nullptr);
2、把时间戳转化成时间结构体(localtime()函数是将时间转化为本地时间。)
struct tm * localtime(const time_t * timer);
struct tm * gmtime(const time_t *timer); //将时间戳转化为世界标准时间(即格林尼治时间)比北京时间晚8个小时。
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()为负。*/ };
time_t timestamp = time(nullptr);
tm *t_struct = localtime(×tamp);
cout << t_struct->year << "年" << endl; //2018年
3、结构体转化为时间戳
time_t mktime(tm *timeptr);
time_t timestamp = time(nullptr);
tm *t_struct = localtime(×tamp);
t_struct->tm_hour = 0;
t_struct->tm_min = 0;
t_struct->tm_sec = 0;
time_t newTime = mktime(&t_struct);//该时间戳已改变成今天的0点0分0秒
4、时间转化为字符串
char * ctime(const time_t *timer);//固定格式
size_t strftime(char *strDest,size_t maxsize,const char *format,const struct tm *timeptr);//自定义格式
例:
struct
tm
*ptr;
time_t
timestamp;
char
str[80];
timestamp
=
time
(NULL);
ptr =
localtime
(timestamp);
strftime
(str, 100,
"%Y年%m月%d日 %H:%M:%S"
, ptr);
printf
(str);//2018年06月04日 15:45:28秒