Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


способов несколько.
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;
}

Отправлено: 17:50, 18-11-2007 | #2