Получение разницы во времени с использованием time_t, преобразованного из строки

0

Я пытаюсь получить разницу между двумя датами. Одна дате прямо сейчас, а другая - дата, преобразованная в 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 И значение в секундах также неверно.

  • 0
    Что-нибудь разумное появилось в tm ?
  • 0
    Какое значение возвращается из strptime ?
Показать ещё 2 комментария
Теги:

1 ответ

1
Лучший ответ

Добавьте перед использованием (и вы можете выбрать другое имя для переменной)

memset(&tm, 0, sizeof(struct tm));

См. Раздел "Примечания" в strptime (3)

  • 1
    Вот и все, mktime завершается ошибкой, когда отображается с неверным вводом. Вам не нужно использовать memset , просто сделайте struct tm t = {}; ,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню