Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2007, 12:21   #1
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию TDateTime - математика времени

Привет всем. Запарился считать время. Может у кого-нибудь есть толковая функция с этой математикой. Задача такая:

var DT1, DT2, tmp: TDateTime;

Допустим у меня в таблице (поле as TDatetime) первая дата DT1
14.09.2007 10:15:30
вторая дата DT2
14.09.2007 09:10:15
как видите, разница в дате/времени
1 час 05 минут 15 секунд.

Как от первого значения отнять второе чтобы получилось
00.00.0000 01:05:15 (или узнать количество минут или секунд, дальше я бы разобрался сам).
Что-либо типа
tmp:= DT1 - DT2 проходит только с TDate. С TDateTime не проходит.
Извините, если непонятно спрашиваю. Сам запутался...
_SERGEYX_ вне форума Ответить с цитированием
Старый 14.09.2007, 13:22   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

а почему не отнимается?
должно работать

time1,time2: TDateTime;
razn: double;
...
razn := time2 - time1;

Кстати х/з в каком формате результат будет, но точно double )
пыщь
JTG вне форума Ответить с цитированием
Старый 14.09.2007, 14:27   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Меня спасает то, что разница не может быть более 24 часов.
Поэтому такая лажа, как я написал ниже, проходит нормально. Но все равно как-то несолидно...

Код:
var aMinute: TDateTime;
....................
        aMinute := EncodeTime(0, 0, 0, 0);
{Циклично суммирую разницу во времени}
         while not tmpQuery.Eof do
         begin
               aMinute := aMinute + (tmpQuery.Fields[1].AsDateTime - tmpQuery.Fields[2].AsDateTime);
            tmpQuery.Next;
         end;
{Если сумма всех разниц более 15 часов то пишу во временную таблицу}
         if aMinute > StrToDateTime('15:00:00') then
         begin
            with tmpTable do
            begin
               Insert;
               FieldByName('kod').AsString := tmpKod;
               FieldByName('fio').AsString := tmpFIO;
               FieldByName('aTime').AsString := timetostr(aMinute); //сплюсованная разница
               Post;
            end;
         end;
_SERGEYX_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Математика для программиста Gribushkino Свободное общение 12 07.01.2011 01:25
Математика doniyor Общие вопросы Delphi 2 15.05.2008 18:25
[Error] UIsp.pas(232): Incompatible types: 'TAge' and 'TDateTime' Nikitin Общие вопросы Delphi 2 03.04.2008 11:56
Добавить тип TTime:TDateTime Nikitin Помощь студентам 2 18.02.2008 08:31
Математика в DELPHI ironden Общие вопросы Delphi 2 17.05.2007 15:01