2011-02-03 42 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 
} 

理由:

おかげで、
SYDは、現在の時刻を取得するには、time機能を使用

+0

"C++"ではなく "C"にラベルを変更しました。彼らは2つの異なる言語であり、このコードはC言語で書かれています... –

答えて

0

入力日にもう一度呼び出すと、以前の時刻構造を上書きします。

+0

これはエラーを投げています。エラーエラーC2664: 'gmtime': 'time_t'から 'const time_t *'にパラメータ1を変換できません。 – sid

+0

正しいですが、私は修正で編集しました。 –

+0

感謝のエリ、それはまだ私にcurrect情報を与えていません。私は、年、月、日が正しいことを意味しますが、時、分、秒は間違っています。私のシステムの日付は2011年3月3日15.27です。上記のコードによれば、2011年3月3日9.55です。何が問題なのでしょうか? – sid

関連する問題