2011-02-03 5 views
0

날짜가 tm 형식입니다. 현재 시스템 날짜와 비교하는 방법은 무엇입니까? 난 그냥 tm_year, tm_mon, tm_mday를 비교하고 싶다.C++ - 현재 시스템 날짜와 날짜 비교

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

기본적으로 다른 날짜에 속한 데이터 컬렉션이 있습니다. 그래서 현재 날짜에 대한 데이터를 필터링하고 싶습니다. , 당신은 tm 구조 gmtime 내부 버퍼에 대한 포인터를 반환한다는 것입니다 복사해야합니다

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 
} 

이유 :

감사합니다,
시드 현재 시간을 얻으려면, time 기능을 사용

+0

레이블을 "C++"대신 "C"로 변경했습니다. 그들은 두 가지 다른 언어이며,이 코드는 C 언어입니다 ... –

답변

0

따라서 입력 한 날짜로 다시 호출하면 이전 시간 구조를 덮어 씁니다.

+0

그것은 아래에 오류가 던지고있다. 오류 오류 C2664 : 'gmtime': 'time_t'에서 'const time_t *'로 매개 변수 1을 변환 할 수 없습니다. – sid

+0

정확합니다. 수정 사항을 수정했습니다. –

+0

감사합니다. Eli, 그것은 아직도 나에게 currect 정보를 제공하지 않습니다. 나는 년, 월, 일이 정확하다는 것을 의미하지만시, 분, 초는 정확하지 않다. 내 시스템 날짜는 2011 년 3 월 2 일 15.27입니다. 위의 코드에 따르면 2011 년 3 월 2 일 9.55입니다. 무엇이 문제일까요? – sid