TDateTime. Работа с датой и временем в Borland C++ Builder

Автор: Администратор
Дата публикации: 23 октября 2012 года
Раздел: Статьи для программиста

TDateTime в Borland C++ Builder

TDateTime

Первое, что необходимо подметить перед началом работы с классом TDateTime – это то, что он не унаследован от TObject, следовательно совсем необязательно создавать этого экземпляр класса с помощью оператор new. Второе: у этого класса нет свойств и событий, а присутствуют только методы. И, наконец третье: у TDateTime существует огромное множество перегруженных арифметических операторов.

TDateTime – по существу является всего лишь числом с плавающей точкой двойной точности. Следовательно, например, для того, чтобы вычислить разницу между двумя соответствующими датами, необходимо вычесть одну дату из другой:

TDateTime date1 = StrToDate("ДД.ММ.ГГГГ"); //определение первой даты.
TDateTime date2 = StrToDate("ДД.ММ.ГГГГ"); //определение второй даты.
double difference = (double)(date2 - date1); //определение разности между датами в днях.
Edit1->Text = difference; //соответственно в Edit1 будет значение разности.

Далее рассмотрим три функции, которые дают возможность нам узнать текущие дату и/или время:

TDateTime CurrentDate = Date(); //текущая дата.
TDateTime CurrentTime = Time(); //текущее время.
TDateTime CurrentDateTime = Now(); //текущие дата и время.

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

Edit2->Text = MonthDays[IsLeapYear(Год)][Номер месяца]; //соответственно в Edit2 будет количество дней в выбранном вами месяце соответствующего года.

Теперь попробуем изменить один из компонентов TDateTime, не затрагивая другой компонент:

TDateTime datetime1 = StrToDate("ДД.ММ.ГГГГ ЧЧ.ММ"); //определение первой составляющей даты и времени.
TDateTime datetime2 = StrToDate("ДД.ММ.ГГГГ ЧЧ.ММ"); //определение второй составляющей даты и времени.
ReplaceDate(datetime1,datetime2); //datetime1 теперь содержит ту же дату, что и datetime2, но время осталось прежним.
ReplaceTime(datetime2,datetime1); //а теперь datetime2 содержит то же время, что и datetime1, но дата осталась прежней.

Далее рассмотрим другие арифметические операции с TDateTime

TDateTime datetime = StrToDate("ДД.ММ.ГГГГ"); – определение даты.

TDateTime datetime += 1.0; – сдвигаем на 1 день вперед.

TDateTime datetime -= 2.0; – сдвигам на 2 дня назад.

TDateTime datetime -= 1.125; – при сложении числа с объектом TDateTime целая часть числа прибавляется к дате, а дробная часть – ко времени экземпляра TDateTime. Таким образом, в данном случае мы уменьшаем значение даты на 1 лень, а значение времени – на три часа (0.125 – одна восьмая часть суток).

TDateTime datetime += 1.5; – в данном случае мы увеличиваем значение даты на 1 лень, а значение времени – на двенадцать часов (0.5 – одна вторая часть суток).

TDateTime datetime += 7.0; – сдвигаем на неделю вперед.

TDateTime datetime = IncMonth(datetime, -1); – сдвигаем на месяц назад.

Последнее, что хотелось бы рассмотреть – это два полезных метода класса TDateTime: DecodeDate и DecodeTime. Данные методы объявлены следующим образом:

void __fastcall DecodeDate(unsigned short* year, unsigned short* month, unsigned short* day) const;

void __fastcall DecodeTime(unsigned short* hour, unsigned short* min, unsigned short* sec, unsigned short* msec) const;

Они разбивают соответственно дату и время на составные части. Рассмотрим следующий код:

unsigned short Year;
unsigned short Month;
unsigned short Day;
TDateTime::CurrentDateTime().DecodeDate(&Year, &Month, &Day);

Соответственно текущее значение года будет в переменной Year, текущее значение месяца в переменной Month, текущее значение числа в переменной Day. Для метода DecodeTime все будет аналогично.

Fatal error: Call to a member function return_links() on a non-object in /var/www/zoleg9992/data/www/e2epro.com/page/footer.php on line 42