powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Добавление Часов, Минут, Секунд
14 сообщений из 14, страница 1 из 1
Добавление Часов, Минут, Секунд
    #40075287
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Парни.... Не пинайте Сильно ))
Подскажите Как оптимизировать код правильно...
Разбираем время на часы, минуты, секунды.. После обнуляем время, тоесть вычитаем из часа - час, минут - минуты,
секунд - секунды... тоесть обнуляем.. и собираем обратно с возможностью отдельного добавления Часов, Минут, Секунд...
Проблема в неправильном пересчете... Тоесть с 00:00 нормально а к 23:00 пропало 2 часа и пискер показывает 21:00
Подскажите если не трудно...!!!

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
procedure TForm1.Button1Click(Sender: TObject);
var
   Ts,Tf,TFHour,TFMinute,TFSecond: TTime;
   SHour,SMinute,SSecond: String;
   FHour,FMinute,FSecond: String;
   IntSHour,IntSMinute,IntSSecond: Integer;
begin
   try
   Ts := Now;
   SHour   := FormatDateTime('hh',Ts);
   SMinute := FormatDateTime('nn',Ts);
   SSecond := FormatDateTime('ss',Ts);
   dtpStart1.Time := StrToTime(SHour+':'+SMinute+':'+SSecond);
   Edit1.Text := SHour;
   Edit2.Text := SMinute;
   Edit3.Text := SSecond;
   IntSHour   := StrToInt(SHour);
   IntSMinute := StrToInt(SMinute);
   IntSSecond := StrToInt(SSecond);
   Edit4.Text := IntToStr(IntSHour-IntSHour);
   Edit5.Text := IntToStr(IntSMinute-IntSMinute);
   Edit6.Text := IntToStr(IntSSecond-IntSSecond);
   FHour   := Edit1.Text;
   FMinute := Edit5.Text;
   FSecond := Edit6.Text;
   Tf := StrToTime(FHour+':'+FMinute+':'+FSecond);
   TFHour   := IncHour(Tf,+SpinEditHour.Value);
   TFMinute := IncMinute(Tf,+SpinEditMinute.Value);
   TFSecond := IncSecond(Tf,+SpinEditSecond.Value);
   Edit7.Text := TimeToStr(TFHour);
   Edit8.Text := TimeToStr(TFMinute);
   Edit9.Text := TimeToStr(TFSecond);
   dtpFinish1.Time := TFHour+TFMinute+TFSecond+(0/(24*60*60));  // Вот ТУТ..!!!!!!!!!!
   except
   MessageDlg('Ошибка..!!!',mtError,[mbOk],0);
   end;
end;
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075288
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты забыл сказать в чем собственно состоит задача.
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075291
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Ты забыл сказать в чем собственно состоит задача.


Как правильно поставить пересчет времени что б к вечеру не уплывало время

Например в 22:00 все три эдита показывют это время то при сложении у нас получается 66 часов - минус 2*24 (тоесть 2 дня)
показывает 18:00 - плывет время от неправильного пересчета

То есть неправильное сложение времени... я уже мозг сломал..)))
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075292
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_od_,

Понятней не стало.
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075294
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
alex_od_,

Понятней не стало.


Код: pascal
1.
 dtpFinish1.Time := TFHour+TFMinute+TFSecond+(0/(24*60*60));  // Вот ТУТ..!!!!!!!!!!



Постараюсь обьяснить проще... есть шедулер. в котором есть пицкеры...
Если ты открываешь его и хочешь заполнить ночью то пицкер тебе предлагает выставить время часы со спинэдитом что б была возможность добавить +1 или +5 часов... и минуты с секундами обнуленные (что б лишний раз не крутить скролл...
Так вот ночью он показывает точное время часов А к 22:00 - в место десяти вечера показывает 18:00 то есть шесть вечера...
Время уплывает - не могу понять почему...!!
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075296
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_od_,

Сильно понятней не стало.
Но по коду видно что ты страдаешь какой-то адовой хренью.

Открой для себя функции DecodeTime и EncodeTime.

Перекодировать что-то там через текст - вообще не нужно и хрень полная.

P.S. 0/(24*60*60) - это волшебно!
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075297
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и что бы ты понимал:

TDateTime = Часы/24 + Минуты/24/60 + Секунды/24/60/60.
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075298
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо...буду разбираться с функцией DecodeTime и EncodeTime.
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075300
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_od_
Подскажите если не трудно...!!!

Код: pascal
1.
2.
3.
4.
begin
  dtpStart1.Time := Frac(Now);
  dtpFinish1.Time := Frac(dtpStart1.Time + SpinEditHour.Value / 24 + SpinEditMinute.Value / 1440 + SpinEditSecond.Value / 86400);
end;


и больше не пиши на форум под градусом.
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075302
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Спасибо Огромное .... Всем Спасибо..!!!
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075666
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_od_,

Дату себе заведи еще для шедулера. Сейчас ты похоже тупо задаешь период - через сколько надо запустится.
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075907
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_od_,

открой для себя модуль DateUtils, там есть такие функции как IncHour
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075908
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747
alex_od_,

открой для себя модуль DateUtils, там есть такие функции как IncHour
Так не интересно. Там еще и всякие типа HoursBetween есть... Совсем разленится же человек.
...
Рейтинг: 0 / 0
Добавление Часов, Минут, Секунд
    #40075988
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парни Спасибо Всем.... Разобрался...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Добавление Часов, Минут, Секунд
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]