Показать полную графическую версию : Проверка даты и времени.
Jonik-Mnimonik
18-11-2007, 10:08
Здраствуйте, помогите пожалуйста решить следующую проблему.
Есть переменная 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 то первая больше чем вторая, что не правильно.
Пожалуйста помогите.
способов несколько.
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
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");
Здраствуйте, помогите пожалуйста решить следующую проблему.
Есть переменная 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. я именно так и сравнивал.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.