2011-02-03 7 views
0

У меня есть дата в формате tm. как я могу сравнить с текущей системной датой. Я просто хочу сравнить tm_year, tm_mon, tm_mday.C++ - Сравнить дату с текущей системной датой

int second = atoi(dateinSecond.c_str()); 
tm * ptm; 
ptm = gmtime (second); 

В основном у меня есть сбор данных, относящихся к разной дате. Поэтому я хочу фильтровать данные для текущей даты.

Спасибо,
SYD

+0

Изменил метку на «C» вместо «C++». Это два разных языка, и этот код находится в C ... –

ответ

0

Чтобы получить текущее время, используйте time функцию:

time_t timeNow = time(NULL); 
tm now; 
tm* nowTemp = gmtime(&timeNow); 
memcpy(&now, nowTemp, sizeof(now)); 

int second = atoi(dateinSecond.c_str()); 
tm * ptm; 
ptm = gmtime (second); 

if (now.tm_year == ptm->tm_year && 
    now.tm_mon == ptm->tm_mon && 
    now.tm_mday == ptm->tm_mday) 
{ 
    // Equal 
} 

Причина вы должны скопировать tm структуры является то, что gmtime возвращает указатель на внутренний буфер, поэтому, если вы снова назовете его на дату ввода, вы перепишете предыдущую структуру времени.

+0

Это метание ниже ошибки. Ошибка ошибка C2664: 'gmtime': невозможно преобразовать параметр 1 из 'time_t' в 'const time_t *' – sid

+0

Вы правы, я отредактировал с исправлением. –

+0

Спасибо, Эли, он до сих пор не дает мне информацию о себе. Я имею в виду, что год, месяц и дата правильные, но часы, минуты и секунды не соответствуют. Моя системная дата - 3 февраля 2011 г. 15.27. но в соответствии с приведенным выше кодом это 3 февраля 2011 9.55. что может быть проблемой? – sid

Смежные вопросы