Как сравнить две даты в C ++? - PullRequest
1 голос
/ 14 февраля 2012

Подскажите, пожалуйста, есть ли способ узнать количество дней, проведенных с прошлого дня (пожалуйста, посмотрите код ниже). Если у меня есть строка, связывающая день в 2009 году, как я могу сравнить ее с текущим днем ​​и показать, сколько дней это было?

#include <time.h>
#include <iostream>
#include <string>
#include <ctime>
using namespace std;

int main ()
{
   string olday = "05 14 2009";
   const int MAXLEN = 80;
   char newday[MAXLEN];
   time_t t = time(0);
   strftime(newday, MAXLEN, "%m %d %Y", localtime(&t));
   cout <<"Current day is: "<<newday << '\n';

   cout <<"Days spent since olday: "<<???? << '\n';
   return 0;
}

Microsoft Visual Studio 2010 C ++ консоль

Ответы [ 2 ]

5 голосов
/ 14 февраля 2012

Вы можете использовать difftime.

http://www.cplusplus.com/reference/clibrary/ctime/difftime/

Так как он дает разницу в секундах, его довольно легко преобразовать в дни, месяцы и т. Д.

4 голосов
/ 14 февраля 2012

Сначала вам нужно преобразовать устаревшую строку во что-то более удобное.Способ сделать это - создать struct tm и заполнить значения.Затем преобразуйте структуру tm в time_t с mktime() и используйте difftime() с двумя значениями time_t.И конвертировать из секунд в дни.

//create a local tm struct
struct tm old_day ;

//since it's a local, zero it out
memset(&old_day, 0, sizeof(struct tm)) ;

//fill in the fields 
old_day.tm_year = 109 ; //years past 1900
old_day.tm_mon = 4 ;//0-indexed

//convert to a time_t
time_t t_old = mktime(&old_day) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...