Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Проверка даты и времени. (http://forum.oszone.net/showthread.php?t=94341)

Jonik-Mnimonik 18-11-2007 10:08 680732

Проверка даты и времени.
 
Здраствуйте, помогите пожалуйста решить следующую проблему.
Есть переменная data, data1 и vremja,vremja1, дата и время соответственно. Как сравнить мне data и data1, vremja и vremja1.
Формат переменных следующий. char data[]={"18.11.2007"}; char vremja[]={"10:03:46"};
Если я буду сравнивать с помощью strcmp, то ни чего не выйдит, так как если я буду сравнивать 18.11.2007 и 18.11.2008, то первая дата меньше чем вторая, а если буду сравнивать 29.11.2007 и 18.12.2007 то первая больше чем вторая, что не правильно.
Пожалуйста помогите.

pva 18-11-2007 17:50 680962

способов несколько.
1. привести некоторой библиотесной функцией всё к виду "сколько секунд прошло с 01.01.1900"
2. переделать всё в строчку правильного вида и сравнить strcmp ;-)
например: "Dd.Mm.Yyyy" переводим в вид "Yyyy-Mm-Dd". Чтобы 2 раза не гонять процессор по одной и той же строчке, сделаем функцию strcmp, в которую уже включен "переворот даты".

Код:

// если дата указана в неправильном виде, правильность результата не гарантируется

int date_strcmp(const char* date1, const char* date2)
{
  static unsigned char const digit_idx[8] = {/*Yyyy*/ 6,7,8,9, /*Mm*/ 3,4, /*Dd*/ 0,1};

  const unsigned char *begin = digit_idx;
  const unsigned char *end    = digit_idx + 8;

  int result = -1;
  while (begin!=end && 0==(result=date1[*begin]-date2[*begin])) ++begin;
  return result;
}


Alexej77 18-11-2007 20:49 681037

C++ Builder:
Код:

char data[]  = {"18.11.2007"};
char data1[] = {"18.11.2008"};

char vremja[]  = {"10:03:46"};
char vremja1[] = {"10:04:46"};

if (StrToDate(data) > StrToDate(data1))
    ShowMessage("data > data1");

if (StrToTime(vremja) > StrToTime(vremja1))
    ShowMessage("vremja > vremja1");


suxxl 20-11-2007 16:15 682093

Цитата:

Здраствуйте, помогите пожалуйста решить следующую проблему.
Есть переменная data, data1 и vremja,vremja1, дата и время соответственно. Как сравнить мне data и data1, vremja и vremja1.
Формат переменных следующий. char data[]={"18.11.2007"}; char vremja[]={"10:03:46"};
Если я буду сравнивать с помощью strcmp, то ни чего не выйдит, так как если я буду сравнивать 18.11.2007 и 18.11.2008, то первая дата меньше чем вторая, а если буду сравнивать 29.11.2007 и 18.12.2007 то первая больше чем вторая, что не правильно.
Пожалуйста помогите.
А если наоборот? 20071129 в любом случае меньше чем 20071218. я именно так и сравнивал.


Время: 00:14.

Время: 00:14.
© OSzone.net 2001-