C-mktime()返回-1,其中不应返回';T
我试图编写一个函数,查找当前日期与格式化字符串中给定日期之间的天数差异(如C-mktime()返回-1,其中不应返回';T,c,date,datetime,mktime,C,Date,Datetime,Mktime,我试图编写一个函数,查找当前日期与格式化字符串中给定日期之间的天数差异(如dd.mm.yy H:m:S),但mktime每次返回-1。尝试用零初始化两个时间结构,但没有帮助 而且,将time\u t更改为size\u t可以使它与mktime(现在)一起工作,但不能与mktime(parsedDate) 我真的很困惑,我做错了什么 我在Windows10上使用MSVC2019(v142) int findDifferenceInDays(char* dateStr) { // D
dd.mm.yy H:m:S
),但mktime每次返回-1。尝试用零初始化两个时间结构,但没有帮助
而且,将time\u t
更改为size\u t
可以使它与mktime(现在)
一起工作,但不能与mktime(parsedDate)
我真的很困惑,我做错了什么
我在Windows10上使用MSVC2019(v142)
int findDifferenceInDays(char* dateStr)
{
// Date/time format example:
// 12.09.2018 13:44:30
char date[] = "12.09.2018 13:44:30";
struct tm *now, *parsedTime;
time_t t_now = time(0);
now = localtime(&t_now);
time_t temp_time = time(&temp_time);
parsedTime = localtime(&temp_time);
int day, month, year, hour, minutes, seconds;
sscanf(dateStr, "%d.%d.%d %d:%d:%d",
&day, &month, &year, &hour, &minutes, &seconds);
parsedTime->tm_year = year - 1990;
parsedTime->tm_mon = month - 1;
parsedTime->tm_mday = day;
parsedTime->tm_hour = hour;
parsedTime->tm_min = minutes;
parsedTime->tm_sec = seconds;
time_t endTime, begTime;
endTime = mktime(now);
begTime = mktime(parsedTime);
double diffInSeconds = difftime(endTime, begTime);
int daysDifference = difftime(endTime, begTime) / (60*60*24);
printf("Days between %s and now: %lf\n", dateStr, daysDifference / (60 * 60 * 24));
return daysDifference;
}
可能不是你的直接错误,但是
parsedTime->tm_year = year - 1900; /* not 1990 */
now
和parsedTime
都指向同一个结构。但是,我不确定为什么这会导致mktime()
返回-1
。它只会使您计算0
的差值daysDifference/(60*60*24)
是一个int
,但您使用%lf
格式打印它,该格式用于长双精度
。日期
变量用于什么?你从不使用它。传递给函数的dateStr
的值是多少?可能不是直接的错误,而是parsedTime->tm_year=year-1900;/*不是1990年*/