Консультация № 63855
23.11.2006, 13:15
0.00 руб.
0 7 5
Здравствуйте!
Извените за откровенно ламерский вопрос. Я после учёбы долго ничего не писал, вот и появляются тупые вопросы.
Получаю дату:

var date:tdatetime;
begin
date:=time; //18:11:21 к примеру

мне нужно прибавить к этому времени 23 минуты и проверить с текущим временем. Вот как прибавить меня интересует. Сам придумал способ только через преобразование сначало к строковому типу, а потом к int. но хочется как-то по проще.
Заранее благодарю.

Обсуждение

Неизвестный
23.11.2006, 13:25
общий
это ответ
Здравствуйте, Prowler!
Тип TDateTime эвивалентен типу Real. Где дробнаЯ часть соответствует доли суток.
Значит 23 мин:=1/(23*60*24)
Неизвестный
23.11.2006, 13:26
общий
это ответ
Здравствуйте, Prowler!

Используйте функцию IncMinute из модуля DateUtils
Неизвестный
23.11.2006, 13:33
общий
это ответ
Здравствуйте, Prowler!

Воспользуйтесь функцией <b><font color=purple>IncMinute</font></b>.

<b>Пример использования:</b>
<code>
procedure TForm1.Button1Click(Sender: TObject);
var tm:TDateTime;
begin
tm:=IncMinute(GetTime(),23);
ShowMessage(TimeToStr(tm));
end;
</code>
Неизвестный
23.11.2006, 13:58
общий
Можно воспользоваться идеей решения <b>Monah</b>, но без "магических чисел", хоть и очевидных.date := time + EncodeTime(0, 23, 0, 0); // под рукой Delphi нет — не помню точно, как называется функция.Для сравнения используйтеMinutesBetween(date, now);
Неизвестный
23.11.2006, 13:58
общий
это ответ
Здравствуйте, Prowler!
В модуле DateUtils есть функции работы со временем в Delphi. Следующая функция выполняет данну задачу.

function IncXXXX (const AValue: TDateTime; const ANumberOfXXXX: Integer = 1): TDateTime;

где XXXX - Day, Hour, MilliSecond, Minute, Month, Second, Week, Year. Увеличивает указанную дату на нужное количество дней (часов, миллисекунд, минут, месяцев, секунд, недель, лет).
Неизвестный
23.11.2006, 14:42
общий
Огромное спасибо Кирилл!Раньше этим способом и пользовался, но забыл - старею...
Неизвестный
24.11.2006, 19:48
общий
это ответ
Здравствуйте, Prowler!
Можно складывать и сравнивать так:

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=FormatDateTime(‘hh:nn:ss‘,Time);
Edit2.Text:=TimeToStr(Time + StrToTime(‘0:23‘));
end;
Форма ответа