代码如下,不论输入什么时间,比如2018-12-30,mktime总是得到-1,很是奇怪,请教高手这是怎么回事?
#include <iostream>
#include <ctime>
int main(int argc, char *argv[])
{
struct tm time0 = { 0 }, time1 = { 0 };
int year, mon, mday;
time0.tm_year = 70; //mktime能接受的最小年数
time0.tm_mon = 0; //1月
time0.tm_mday = 1; //1日
time0.tm_hour = 8; //8时 +8时区在1970年所能接受的最小小时数
time0.tm_hour = 0;
time0.tm_min = 0;
time0.tm_sec = 0;
printf(""); scanf("%4d-%2d-%2d", &year, &mon, &mday);
time1.tm_year = year - 1900; //struct tm里面,tm_year以1900年为基准。
time1.tm_mon = mon - 1;
time1.tm_mday = mday;
time1.tm_hour = 0;
time1.tm_min = 0;
time1.tm_sec = 0;
auto t1 = mktime(&time1);
auto t2 = mktime(&time0);
long seconds = (long)(difftime(t1, t2));
std::cout << seconds << std::endl;
}