Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Сравнение дат


Автор: freshAngel 8.2.2009, 20:24
Привет.
Есть две даты: 2009-01-01 и 2009-02-01 в переменных date1 и date2 соотвественно.
Нужно сравнить месяц и год.
Делаю простым методом.

Код

Word Year1, Month1, Day1; 
Word Year2, Month2, Day2;
DecodeDate(date1, Year1, Month1, Day1);
DecodeDate(date2, Year2, Month2, Day2);
if(Month1 == Month2 && Year1 == Year2) {.....}


Вопрос такой.
Можно, как - либо упростить данное сравнение дат.
Например, чтобы не было лишних переменных и т.д.

Автор: Dmi3ev 8.2.2009, 20:52
вот основные функции, есть и другие...
Код

TDateTime t;
t=Now();

int m=MonthOf(t);
int y=YearOf(t);
int d=DayOf(t);
int h=HourOf(t);
int s=SecondOf(t);
int min=MinuteOf(t);


подключить не забудь...
Код

#include <DateUtils.hpp>

Вот конкретно для твоего случая
Код

TDateTime dt1, dt2;
dt1=StrToDate("01.01.2009");
dt2=StrToDate("01.02.2009");

(YearOf(dt1)==YearOf(dt2) && MonthOf(dt1)==MonthOf(dt2))
?ShowMessage("TRUE")
:ShowMessage("FALSE");

Автор: Usper 8.2.2009, 21:24
Переменные TDateTime можно просто сравнивать:
Код

TDateTime D1, D2;
D1=StrToDate("01.01.2009");
D2=StrToDate("02.01.2009");
if(D1==D2) ShowMessage("Совпадают");
else ShowMessage("Не совпадают");

 smile 
З.Ы. от чего зависит наличие подсветки кода в сообщении топика?

Автор: Dmi3ev 8.2.2009, 21:33
Код

Переменные TDateTime можно просто сравнивать:

а тут надо сравнивать только месяц и год... число не нужно...

Автор: Usper 8.2.2009, 21:46
Да, действительно, проглядел... :(

Автор: freshAngel 8.2.2009, 21:59
Dmi3ev, Usper -  Большое спасибо!
То, что доктор прописал!


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)