我正在尝试获取某个日期的时间戳,目前我正在使用函数mktime()
,但它正在生成当前日期的时间戳,而不是我输入的日期。这是代码:
#include <ctime>
#include <iostream>
using namespace std;
long long unixTimeStamp(
int year,
int month,
int day,
int hour,
int min,
int sec
) {
tm uts_time;
uts_time.tm_year = year - 1900;
uts_time.tm_mon = month - 1;
uts_time.tm_mday = day;
uts_time.tm_sec = sec;
uts_time.tm_min = min;
uts_time.tm_hour = hour;
time_t out = mktime(&uts_time);
return time(&out);
}
int main() {
cout << unixTimeStamp(2010,8,29,1,22,9) << endl;
return 0;
}
输出:
1362541046
有人可以告诉我我做错了什么吗?
答案 0 :(得分:4)
您错误地使用了time
。
time
功能查看reference。如果参数不是NULL
,则会将其设置为当前日历时间。
移除对time(&out)
的来电,然后按原样返回out
。
time_t unixTimeStamp(
int year,
int month,
int day,
int hour,
int min,
int sec
)
{
tm uts_time;
uts_time.tm_year = year - 1900;
uts_time.tm_mon = month - 1;
uts_time.tm_mday = day;
uts_time.tm_sec = sec;
uts_time.tm_min = min;
uts_time.tm_hour = hour;
return mktime(&uts_time);
}
int main() {
cout << unixTimeStamp(2010,8,29,1,22,9) << endl;
return 0;
}
输出:
1283008929