Я пытаюсь получить разницу между двумя датами, используя приведенный ниже код C.
но код всегда дает разницу 0. Помогите мне, где я делаю ошибку.
Я использую компилятор gcc под linux.
#include <stdio.h>
#include <time.h>
int main ()
{
struct tm start_date;
struct tm end_date;
time_t start_time, end_time;
double seconds;
start_date.tm_hour = 0; start_date.tm_min = 0; start_date.tm_sec = 0;
start_date.tm_mon = 10; start_date.tm_mday = 15; start_date.tm_year = 2013;
end_date.tm_hour = 0; end_date.tm_min = 0; end_date.tm_sec = 0;
end_date.tm_mon = 10; end_date.tm_mday = 20; end_date.tm_year = 2013;
start_time = mktime(&start_date);
end_time = mktime(&end_date);
seconds = difftime(end_time, start_time);
printf ("%.f seconds difference\n", seconds);
return 0;
}
EDIT: ответ @qchen помог решить мою проблему. есть еще одно сомнение. Ниже было мое обновление. Из ответа
start_date.tm_hour = 0; start_date.tm_min = 0; start_date.tm_sec = 0;
start_date.tm_mon = 10-1; start_date.tm_mday = 18; start_date.tm_year = 2013-1876;
end_date.tm_hour = 0; end_date.tm_min = 0; end_date.tm_sec = 0;
end_date.tm_mon = 10-1; end_date.tm_mday = 20; end_date.tm_year = 2013-1876;
tm_year - это год с 1900 года, тогда почему я получаю правильный результат, если заменяю 1876 годом между 1876 и 2012 годами.
mktime
. Вы определенно должны обнулить структуры. - person Joni   schedule 26.09.2013