Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Добавление Часов, Минут, Секунд / 14 сообщений из 14, страница 1 из 1
03.06.2021, 01:07
    #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
03.06.2021, 01:09
    #40075288
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление Часов, Минут, Секунд
Ты забыл сказать в чем собственно состоит задача.
...
Рейтинг: 0 / 0
03.06.2021, 01:19
    #40075291
alex_od_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление Часов, Минут, Секунд
rgreat
Ты забыл сказать в чем собственно состоит задача.


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

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

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

Понятней не стало.
...
Рейтинг: 0 / 0
03.06.2021, 01:30
    #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
03.06.2021, 01:40
    #40075296
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление Часов, Минут, Секунд
alex_od_,

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

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

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

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

TDateTime = Часы/24 + Минуты/24/60 + Секунды/24/60/60.
...
Рейтинг: 0 / 0
03.06.2021, 01:48
    #40075298
alex_od_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление Часов, Минут, Секунд
Спасибо...буду разбираться с функцией DecodeTime и EncodeTime.
...
Рейтинг: 0 / 0
03.06.2021, 01:55
    #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
03.06.2021, 02:10
    #40075302
alex_od_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление Часов, Минут, Секунд
softwarer Спасибо Огромное .... Всем Спасибо..!!!
...
Рейтинг: 0 / 0
04.06.2021, 13:53
    #40075666
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление Часов, Минут, Секунд
alex_od_,

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

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

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


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