Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.15;
Скачать: CL | DM;

Вниз

Не получается вычислить оставшееся время   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.049 c
15-1158903145
Ega23
2006-09-22 09:32
2006.10.15
С Днём рождения! 22 сентября


2-1159193921
root
2006-09-25 18:18
2006.10.15
Нужна помощ!!!!


2-1159163382
Mamed_1971
2006-09-25 09:49
2006.10.15
Date and time


15-1158810548
Pazitron_Brain
2006-09-21 07:49
2006.10.15
Стало надо виртуальную машину...


2-1159201684
Mishenka
2006-09-25 20:28
2006.10.15
Как распечатать StringGrid?