Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
6-1148039639
kernel
2006-05-19 15:53
2006.10.15
IP2HostName


15-1158846280
Anton T
2006-09-21 17:44
2006.10.15
реализация QR разложения матрицы


3-1155642423
tytus
2006-08-15 15:47
2006.10.15
Create Trigger Before Insert


2-1159268728
TrainerOfDolphins
2006-09-26 15:05
2006.10.15
DBNavigator вертикально


2-1158740631
laronov
2006-09-20 12:23
2006.10.15
взять данные из окна ЧУЖЕГО приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский