2011-02-03 127 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 ... – 2011-02-03 07:57:29

回答

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 2011-02-03 06:59:20