Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
ВнизНе получается вычислить оставшееся время Найти похожие ветки
← →
ABS (2006-09-27 23:08) [0]Здравствуйте Мастера.
Никак у меня не получается вычислить оставшееся время.
Напр.: Есть некое значение времени -EndTime:="22:00:00"
;
Мне нужно в Label показать оставшееся время сNOW
доEndTime
, в форматеHH:MM:SS
. Что-то вроде таймера обратного отсчета.
Помогите пожалуйста.
← →
Johnmen © (2006-09-27 23:13) [1]StrToDate+F1, TDateTime+F1
← →
Eraser © (2006-09-27 23:16) [2]> [0] ABS (27.09.06 23:08)
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(FormatDateTime("Осталось hh часов, nn минут, ss секунд.",
StrToTime("23:30:00") - Time));
end;
← →
ABS (2006-09-28 00:14) [3]> [2] Eraser © (27.09.06 23:16)
Спасибо большое.FormatDateTime("hh:mm:ss",StrToTime("22:00:00")-Time);
Работает.
← →
Германн © (2006-09-28 01:16) [4]
> Спасибо большое.
> FormatDateTime("hh:mm:ss",StrToTime("22:00:00")-Time);
> Работает.
>
Только, если не нужно будет переходить через 00:00:00.
← →
ABS (2006-09-28 12:51) [5]> Только, если не нужно будет переходить через 00:00:00.
Через 00 прохожу нормально. Проблемы возникают после 22:00.
Т.Е. начиная с 22:00:00 и до 23:59:59 показывается не оставшееся время до 10:00:00, а таймер увеличивается, как только перескакиваю 00:00 все ОК.
← →
Asail (2006-09-28 14:24) [6]А ты так попробуй:
if StrToTime("22:00:00") >= Time then FormatDateTime...
← →
ABS (2006-09-28 17:01) [7]Чет не выходит.
if StrToInt(FormatDateTime("h",Time)) > 9 then
begin
EndTimeUS := "22:00:00";
label1.Caption := "Дневная смена";
end;
if (StrToInt(FormatDateTime("hh",Time)) > 21) or (StrToInt(FormatDateTime("hh",Time)) < 10) then
begin
EndTimeUS := "10:00:00";
Label1.Caption := "Ночная смена";
end;
lbEndTime.Caption :=FormatDateTime("hh:mm:ss",StrToTime(EndTimeUS)-(Time));
Единственный косяк: с 22:00 до 23:59. В остальное время все работает.
:(
← →
Германн © (2006-09-28 19:54) [8]
if (StrToInt(FormatDateTime("hh",Time)) > 9) and (StrToInt(FormatDateTime("hh",Time)) < 22) then
← →
Anatoly Podgoretsky © (2006-09-28 20:04) [9]
> Единственный косяк: с 22:00 до 23:59. В остальное время
> все работает.
Потому что там получается отричательное значение
← →
ABS (2006-09-28 20:24) [10]> [8] Германн © (28.09.06 19:54)
Не, все равно не помогло.
> [9] Anatoly Podgoretsky © (28.09.06 20:04)
А как тогда в данном случае поступить???
← →
Anatoly Podgoretsky © (2006-09-28 21:27) [11]Ввести проверку if Time >= EndTimeUS then
← →
ABS (2006-09-29 01:19) [12]> [11] Anatoly Podgoretsky © (28.09.06 21:27)
> Ввести проверку if Time >= EndTimeUS then
Извините пожалуйста, я что-то не догоняю.
Введя эту проверку, соответственно нужно делать какие-то доп. вычисления времени. Какие??? Ведь если оставитьFormatDateTime("hh:mm:ss",StrToTime(EndTimeUS)-(Time));
получится тоже самое. Либо надоEndTimeUS
присвоить др. значение????
← →
Германн © (2006-09-29 01:42) [13]
> Введя эту проверку, соответственно нужно делать какие-то
> доп. вычисления времени. Какие???
Если смена ночная, то при расчёте "оставшегося до окончания смены" времени следует учитывать, как я уже говорил "переход через 00:00:00". Т.е. ты должен в этом случае сначала произвести проверку Anatoly Podgoretsky © (28.09.06 21:27) [11]. И если она даст Тру, то подсчитать время, оставшееся до полуночи, а после прибавить время "от полуночи до EndTimeUS.
← →
guav © (2006-09-29 01:50) [14]проще всего прибавить 1 (одни сутки), а потом после вычитания взять дробную часть (возможно, брать дробную часть не обязательно)FormatDateTime("hh:mm:ss",Frac(StrToTime(EndTimeUS)-(Time) + 1)));
← →
Германн © (2006-09-29 01:59) [15]
> guav © (29.09.06 01:50) [14]
>
> проще всего прибавить 1 (одни сутки),
У автора фигурирует Time! А в нём нет и не может быть суток.
← →
guav © (2006-09-29 02:48) [16]> [15] Германн © (29.09.06 01:59)
> У автора фигурирует Time! А в нём нет и не может быть суток.
Ну нет, так добавим. Много точности ИМХО не потеряем, т.к. 22:00 это почти сутки.
← →
Германн © (2006-09-29 02:57) [17]
> guav © (29.09.06 01:50) [14]
>
> проще всего прибавить 1 (одни сутки)
Согласен. Проще. Но не !"нагляднее", Имхо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c