![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здраствуйте, подскажите как правильно работать со временем? (складывать, вычитать).
А то написал код, который высчитывает оставшееся время до наступления события. Работает не правильно... Код:
var t:TTime; begin t:=StrToTime(18:00:00); Label1.Caption:=TimeToStr(Time-t); end; Вобщем считает правильно, когда t<Time... А когда t>Time, то считает уже не правильно, значение начинает увеличиваться(подозреваю до 00:00:00)... Как мне с этим бороться? |
|
#2
|
|||
|
|||
|
штоли никто не знает?
|
|
#3
|
|||
|
|||
|
а, собственно, что ты хочешь? Если у тебя t в будущем, то надо делать t - Time - время до события. Если тебе надо учитывать переход через сутки, то еще заполняй часть даты (Date).
Задачу конкретизируй. |
|
#4
|
|||
|
|||
|
Конкретизирую...
Есть программа выключения компьтера во время t. Есть Лэйбл, который пишет, сколько осталось до выключения... В моей проге это реализовано, как я писал выше. Если написать t-Time... то значение Лэйбла идентично первому варианту, что не есть правильно. Возможен вариант перехода через сутки. Например: выключить комп в 03:00, а текущее время 21:00... Как-то не соображу просчет оставшегося времени |
|
#5
|
|||
|
|||
|
высчитай время выключения, включая дату.
далее, получаешь кол-во секунд до выключения (SecondsBetween()). А уж как ты отформатируешь кол-во секунд - это твое дело. можно показать в секундах, можно получить в часах, минутах. Код:
function GetTimeFromSecs(ASecs : Integer) : String;
var
hh, mm, ss : integer;
begin
hh := ASecs div 3600;
mm := (ASecs mod 3600) div 60;
ss := (ASecs mod 3600) mod 60;
Result := Format('%d:%d:%d',[hh,mm,ss]);
end; |