Главная страница
    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.036 c
1-1157642594
DroNIX
2006-09-07 19:23
2006.10.15
Нажатие клавиш по определённому алгоритму


15-1158860149
Palladin
2006-09-21 21:35
2006.10.15
Опрос: Великий стеб


15-1159026826
Весь в делах
2006-09-23 19:53
2006.10.15
Письмо Биллу :)


2-1159288225
Хм...
2006-09-26 20:30
2006.10.15
Клиент для онлайн-игрушки


5-1141156195
Noby
2006-02-28 22:49
2006.10.15
Запись CD при помощи TXPBurn





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский