сравнить даты в C ++ - PullRequest
       10

сравнить даты в C ++

2 голосов
/ 12 октября 2009

У меня есть файл date.txt, в котором есть дата. Подобно, Пн 13 октября 09:37:08 2009.

Теперь я хочу сравнить эту дату с системной датой. Как я могу сравнить даты в C ++.?

Я использовал этот код для получения содержимого из файла 'date.txt'

    string date;
    while ( inDateFile >>date) //inDateFile is an ifstream object 
           cout<<date<<endl;

И этот код для получения системной даты,

  time_t timer;
  struct tm *tblock;
  timer = time(NULL);
  tblock = localtime(&timer);
  string str = asctime(tblock);

Теперь, как я могу сравнить эти две даты ??1011*

Ответы [ 5 ]

4 голосов
/ 12 октября 2009

Разберите значения, используйте функцию std::mktime, чтобы получить time_t, и теперь используйте std::difftime, чтобы получить разницу.

2 голосов
/ 12 октября 2009

Мы используем boost date_time для чтения дат из строк и их сравнения. По нашему опыту это работает очень хорошо.

1 голос
/ 12 октября 2009

преобразовать строку даты в числовое значение времени (32 или 64 бита), иначе, сделать время, затем сравнить с системным временем, которое время (NULL) вернуло.

0 голосов
/ 12 октября 2009

Если вы хотите просто проанализировать строку в вашем файле, вам нужно разделить строку на значения соответственно, вам также, вероятно, нужно проверить, в каком регионе страны это учесть, так как разные регионы имеют разные порядковые / месячные названия и т. Д. . Вы можете сделать это настраиваемым, в каком порядке различные тексты появляются в вашем тексте.

Один из способов решить эту проблему, например, взять вашу строку 'date' и затем использовать шаблон Tokenizer из boost (или, если вы хотите сделать это, C-способ, вызовите функцию strtok ()) разбить строку на подстроки в зависимости от разделителей. После этого легко преобразовать ввод.

Другой, возможно, более простой способ - когда вы читаете из файла, а не читаете всю строку до разделителя, например ',' затем прочитайте еще раз - для этого вы можете использовать inDateFile.getline ().

0 голосов
/ 12 октября 2009

http://datetime.perl.org/index.cgi?FAQBasicUsage

Перед сравнением вам нужно преобразовать дату из txt файла в tm structre.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...