<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 到 11 */
int tm_year; /* 自 1900 起的年数 */
int tm_wday; /* 一周中的第几天,范围从 0 到 6 */
int tm_yday; /* 一年中的第几天,范围从 0 到 365 */
int tm_isdst; /* 夏令时 */
};
C 库函数 time_t mktime(struct tm *timeptr) 把 timeptr 所指向的结构转换为自 1970 年 1 月 1 日以来持续时间的秒数(unix时间戳),发生错误时返回-1。
#include <stdio.h>
#include <time.h>
int main () {
time_t ret;
struct tm info;
info.tm_year = 2021 - 1900;
info.tm_mon = 7 - 1;
info.tm_mday = 4;
info.tm_hour = 0;
info.tm_min = 0;
info.tm_sec = 1;
ret = mktime(&info);
cout<<"unix Time"<<ret<<endl;
return 0;
}
请注意月份在结构体定义时表明了最大是11月,所以转换时需要-1,年份是1900年起,所以需要减1900;
反之可以使用 localtime_r 函数将unix时间戳转换为结构体,那么月份记得+1,年份记得+1900;