Вам нужно
#include <time.h>
в вашем файле, чтобы исправить ошибку о неполном типе.
Редактировать : укажите день, месяц, год, чтобы найти время в секундах с 1 января 1970 года до полуночи в этот день:
struct tm mytm = { 0 };
time_t result;
mytm.tm_year = year - 1900;
mytm.tm_mon = month - 1;
mytm.tm_mday = day;
result = mktime(&mytm);
if (result == (time_t) -1) {
/* handle error */
} else {
printf("%lld\n", (long long) result);
}
Обратите внимание, что в ISO C mktime()
возвращает целое значение типа time_t
, которое представляет время в аргументе struct tm *
, но значение такого интегрального значения не обязательно "секунды с 1 января 1970 г. ». Это не должно быть в секундах вообще. POSIX требует, чтобы time()
, mktime()
и т. Д. Возвращали секунды с 1 января 1970 г., поэтому с вами все должно быть в порядке. Я упоминаю выше для полноты.