Posted by Kieren Searle on the 04/21/09

Compare two dates in C++

When comparing two dates that are of the data type string they will need to be first converted to dates. Once this is done a simple comparison test is possible.

Code:

void compareDates(string date1, string date2) {
  //create a time_t object
  time_t rawtime;
  time(&rawtime);
 
  //create a tm structure and load in date1
  struct tm * timeinfo1;
  timeinfo1 = localtime(&rawtime);
  timeinfo1->tm_year = atoi(date1.substr(6).c_str()) - 1900;
  timeinfo1->tm_mon = atoi(date1.substr(3, 2).c_str()) - 1;
  timeinfo1->tm_mday = atoi(date1.substr(0, 2).c_str());
 
  //create a tm structure and load in date2
  struct tm * timeinfo2;
  timeinfo2 = localtime(&rawtime);
  timeinfo2->tm_year = atoi(date2.substr(6).c_str()) - 1900;
  timeinfo2->tm_mon = atoi(date2.substr(3, 2).c_str()) - 1;
  timeinfo2->tm_mday = atoi(date2.substr(0, 2).c_str());
  
  //compare the dates
  if(timeinfo1 > timeinfo2) cout << "date1 is the latest date";
  else cout << "date2 is the latest date";
}

This function takes two strings, date1 and date2. Both dates are in the format of dd-mm-yyyy. Note that the hyphens can be any character as the sub-strings ignores them.

The function works by creating two tm objects and loading in some demo time data from our time_t object at the beginning of the function. This creates two identical time/date objects. We then overwrite the dates in these objects with our two dates. Once complete we have our two identical date/time objects but now with our two dates overwriting the date parts.

The final lines simply compare the two dates and outputs whichever one is the latest.

Trackback address for this post

An unexpected error has occurred!

If this error persists, please report it to the administrator.

Go back to home page

Additional information about this error:

MySQL error!

Can't open file: 'evo_plugin_captcha_img_17_data.MYI' (errno: 145)(Errno=1016)

Your query:

SELECT COUNT(*) 
FROM evo_plugin_captcha_img_17_data
WHERE cpt_public = "3c95c4598e3a70d1e3f0a9591870ee30"