Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 96
от 14.04.2005, 22:00

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 7


Вопрос № 19446: Здравствуйте уважаемые эксперты! Возник следующий вопрос: Имеются два времени в формате hh:mm:ss, например первое: 14:34:12 и второе 16:32:55, причём второе время всегда больше первого (первое время начало "сессии", второе конец). В...

Вопрос № 19446
Здравствуйте уважаемые эксперты!
Возник следующий вопрос:
Имеются два времени в формате hh:mm:ss, например первое: 14:34:12 и второе 16:32:55, причём второе время всегда больше первого (первое время начало "сессии", второе конец). Вопрос в следующем: как получить разность этого времени в формате hh:mm:ss или в формате X часов Y минут Z секунд?
Надеюсь на вашу помощь.
Отправлен: 09.04.2005, 21:57
Вопрос задал: Подковырин Андрей Вадимович (статус: Посетитель)
Всего ответов отправлено: 7

Отвечает: Bochvarov NikB
Здравствуйте, Подковырин Андрей Вадимович!
DT: tSystemTime
DT.wYear:=10;
DT.wMonth:=10;
DT. wDay:=10;
DT.Hours:=StrToInt(Copy(s,1,2));
DT.Minute:=StrToInt(Copy(s,4,2));
DT.Second:=...
T1:=SystemTimeToDateTime...
T2:=
DateTimeToString(Result,'HH:nn:ss',T2-T1);
Ответ отправил: Bochvarov NikB (статус: 2-ой класс)
Отправлен: 09.04.2005, 23:23

Отвечает: John Freeman
Здравствуйте, Подковырин Андрей Вадимович!
1) Tdatetime1-TDateTime2 - это число
2) DatetimeToStr
3) Обрезать то что вышло из п2
Ответ отправил: John Freeman (статус: Профессионал)
Отправлен: 10.04.2005, 00:56

Отвечает: Malish
Здравствуйте, Подковырин Андрей Вадимович!
Вопрос не дозадан!!!
Я понял что у тебя есть время , и ты его получил с программы , когда прописывал код типа
var
A,B,C : TDateTime;
//Что-то творится
begin
A:=Now;
Edit1.Text := FormatDateTime('hh:nn:ss',A);
end;
//что-то творится
begin
B:=Now;
Edit2.Text := FormatDateTime('hh:nn:ss',B);
end;
//если так то проще некуда
begin
C := B-A;
Edit3.Text := FormatDateTime('hh:nn:ss',C);
end;
Если я понял правильно то вот решение.
Вот вариант когда есть строки 14:34:12 типа string в которых время
C,D,E : TDateTime;
AA,BB,CC : string;
begin
D:=StrToDateTime(AA); //Из строки во время
Edit1.Text := FormatDateTime('hh:nn:ss',D);
E:=StrToDateTime(BB);
Edit2.Text := FormatDateTime('hh:nn:ss',E);
CC:= FormatDateTime('hh:nn:ss',D-E);
Edit3.Text := CC;
end;
Запусти проги и сразу поймешь что тебе надо из этого!
Если что непонятно пиши.
Ответ отправил: Malish (статус: 9-ый класс)
Отправлен: 10.04.2005, 01:11

Отвечает: corsar
Здравствуйте, Подковырин Андрей Вадимович!
Вариант 1.
st1,st2 : string; //Время 1 и 2 - строки
h1,m1,s1 : integer; //первое время
h2,m2,s2 : integer; //второе
x,y,z : integer; //разница
.......
//Преобразуем время-строку в часы, минуты, секунды
h1:=StrToInt(Copy(st1,1,2));
m1:=StrToInt(Copy(st1,4,2));
s1:=StrToInt(Copy(st1,7,2));
h2:=StrToInt(Copy(st2,1,2));
m2:=StrToInt(Copy(st2,4,2));
s2:=StrToInt(Copy(st2,7,2));
x:=h2-h1; //Разница часов
//Разница минут
if m2>=m1 then y:=m2-m1 else
begin
x:=x-1;
y:=60-m1+m2;
end;
//Разница секунд
if s2>=s1 then z:=s2-s1 else
begin
y:=y-1;
z:=60-s1+s2;
end;
//На выходе разница в формате x:y:z
Вариант 2.
st1,st2,st : string; //Время 1 и 2 - строки
T1,T2,T : TDateTime;
.........
T1:=StrToTime(st1);
T2:=StrToTime(st2);
T:=T2-T1;//Разница
st:=TimeToStr(T); //строка - разность времени
TDateTime - стандартный тип Delphi для даты и времени. По сути является просто Real, поэтому с ним можно работать обычными арифмитическими операциями. В данном случае это
вычитание.
функции для работы с типом:
Date - текущая дата
Time - текущее время
//Функции разбиения(формирования) даты/времени на(из) комоненты(ов)
DecodeDate
DecodeTime
EncodeDate
EncodeTime
//Преобразования дата/время <-> строка
DateToStr
TimeToStr
StrToDate
StrToTime
Ответ отправил: corsar (статус: 1-ый класс)
Отправлен: 10.04.2005, 14:01

Отвечает: Boriss
Здравствуйте, Подковырин Андрей Вадимович!
И еще упомяну модуль DateUtils - в нем дофига всего. Вот, например, смотри группу в приложении

Приложение:

Ответ отправил: Boriss (статус: Профессор)
Отправлен: 11.04.2005, 17:29

Отвечает: sir henry
Здравствуйте, Подковырин Андрей Вадимович!
А время то это в каком формате? Что же Вы сомое главное не написали? :)
Если строковое, сто надо написать функцию разбора этой строки, выделить из нее числа и вычитать одно из другого с учетом переноса.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 12.04.2005, 05:38

Отвечает: Полховский Александр Владимирович
Здравствуйте, Подковырин Андрей Вадимович!
Разбить на 3 строчки функциями ansileftstr, ansirightstr и AnsiMidStr, перевести каждую в число функцией strtoint, посчитать(соответственно, ввести условие, когда число из второго времени меньше числа из первого), перевести обратно функцией inttostr, собрать в 1 строку оператором +. Edit1- первое время, Edit2 - второе.

Приложение:

Ответ отправил: Полховский Александр Владимирович (статус: Студент)
Отправлен: 13.04.2005, 19:21


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться

В избранное