Я пытаюсь получить разницу между двумя датами. Одна дате прямо сейчас, а другая - дата, преобразованная в time_t из строкового представления даты.
Мой код выглядит следующим образом
const char *time_details = "12/03/2014";
struct tm tm;
strptime(time_details, "%m/%d/%Y", &tm);
time_t mytime = mktime(&tm);
time_t now;
time(&now);
double seconds = difftime(now, mytime);
LOGG("now = %d", now);
LOGG("mytime = %d", mytime);
LOGG("unsigned int mytime = %d", (int)mytime);
Мой вывод выглядит так:
now = 1417830679
mytime = -1
seconds = 1610001720
mytime всегда выходит на -1 И значение в секундах также неверно.
Добавьте перед использованием (и вы можете выбрать другое имя для переменной)
memset(&tm, 0, sizeof(struct tm));
См. Раздел "Примечания" в strptime (3)
mktime
завершается ошибкой, когда отображается с неверным вводом. Вам не нужно использовать memset
, просто сделайте struct tm t = {};
,
tm
?strptime
?