2011-02-03 8 views
0

J'ai une date au format tm. comment puis-je comparer avec la date actuelle du système. Je veux juste comparer tm_year, tm_mon, tm_mday.C++ - Comparer la date avec la date actuelle du système

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

fondamentalement j'ai une collection de données qui appartient à la date différente. Donc, je veux filtrer les données pour la date actuelle.

Merci,
syd

+0

Modification de l'étiquette en "C" au lieu de "C++". Ils sont deux langues différentes, et ce code est en C ... –

Répondre

0

Pour obtenir l'heure actuelle, utilisez la fonction 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 
} 

La raison pour laquelle vous devez copier la structure tm est que gmtime renvoie un pointeur vers une mémoire tampon interne, Donc, si vous appelez à nouveau pour votre date d'entrée, vous écraserez la structure horaire précédente.

+0

Il est en dessous de l'erreur. Erreur erreur C2664: 'gmtime': impossible de convertir le paramètre 1 de 'time_t' à 'const time_t *' – sid

+0

Vous avez raison, j'ai corrigé avec un correctif. –

+0

Merci Eli, Il ne me donne toujours pas les infos curret. Je veux dire l'année, le mois et la date sont corrects, mais les heures, min et sec sont incurrect. Mon système date le 3 février 2011 15.27. mais selon le code ci-dessus, il est 3 février 2011 9,55. Quel peut être le problème? – sid

Questions connexes