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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Проверка даты и времени.

Ответить
Настройки темы
C/C++ - Проверка даты и времени.

Пользователь


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

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


Здраствуйте, помогите пожалуйста решить следующую проблему.
Есть переменная 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 то первая больше чем вторая, что не правильно.
Пожалуйста помогите.

Отправлено: 10:08, 18-11-2007

 
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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


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

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


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");

Отправлено: 20:49, 18-11-2007 | #3


Пользователь


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

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


Цитата:
Здраствуйте, помогите пожалуйста решить следующую проблему.
Есть переменная 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. я именно так и сравнивал.

-------
Вся наша жизнь - игра.... вот только б не повисла...


Отправлено: 16:15, 20-11-2007 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Проверка даты и времени.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ссылка не работает Изменение настроек даты и времени... _konstr_ Лечение систем от вредоносных программ 1 11-01-2010 20:08
Службы - [решено] изменение даты и времени byik Microsoft Windows Vista 2 27-11-2008 10:09
[решено] Права на вызов свойств даты и времени dimonia Microsoft Windows NT/2000/2003 2 30-05-2008 07:07
CMD/BAT - Проверка даты стандартными средствами bat файла chieffka Скриптовые языки администрирования Windows 3 29-02-2008 11:43
В Делфи изменение даты и времени Borislav Программирование и базы данных 5 11-09-2004 19:13




 
Переход