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